# JPage

继承JBase

# 使用

// pages/index.ts
import { JPage } from 'jgb-weapp';

JPage({});

# 扩展功能

# mixin

vue 类似的 mixin。执行顺序 mixin 优先。

// app.ts
import { JPage } from 'jgb-weapp';
import { pv } from 'xxx-tracker';

JPage.mixin({
  onLoad(options) {
    // 埋点
    pv(options);
  }
});
// pages/index.ts
import { JPage } from 'jgb-weapp';

JPage({
  onLoad() {
    // will auto execute pv()
  }
});

# intercept

  • intercept(eventname: string, func: (opts:any) => any)

Page.onLoad时执行拦截 Page 的某个方法接受的参数,并返回新值。内部实现时通过, Object.defineProperty实现。

import { JPage } from 'jgb-weapp';

JPage.intercept('onShareAppMessage', opts => {
  // opts 为 onShareAppMessage 的options
  if (opts.webViewUrl) {
    // do something
  }
  return opts;
});
  • intercept(func: (opts:any) => any)

提供拦截整个Page(opts: object)

import { JPage } from 'jgb-weapp';

JPage.intercept(opts => {
  const oldLoad = opts.onLoad;

  opts.onLoad = () => {
    // todo
  };

  return opts;
});

# computed

自动计算属性,类似 Vue.computed. 参考Compoonent

import { JPage } from 'jgb-weapp'

JPage({
  data: {
    i: 1
  },
  computed: {
    add() {
      return this.data.a + 1;
    }
  }
})

# watch

数据监听。 参考Component

import { JPage } from 'jgb-weapp'

JPage({
  data: {
    i: 1
  },
  watch: {
    ['i.*'](i) {
      console.log('i')
    }
  }
})

# 扩展属性

# $scrollIntoView

滚动到页面指定元素

$scrollIntoView(selector: string, ctx?: any)

import { JPage } from 'jgb-weapp';

JPage({
  onClick() {
    this.$scrollIntoView('#targetid');
  }
});

# $options

Page.onLoadoptions

import { JPage } from 'jgb-weapp';

JPage({
  onClick() {
    this.$options;
  }
});

# $appOptions

getApp().$appOptions

import { JPage } from 'jgb-weapp';

JPage({
  onClick() {
    this.$appOptions;
  }
});