All Projects → godbasin → watch-behavior

godbasin / watch-behavior

Licence: MIT license
小程序自定义组件扩展 behavior, watch 属性实现

Programming Languages

javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to watch-behavior

mobx-wxapp
在小程序中使用mobx
Stars: ✭ 54 (+200%)
Mutual labels:  wxapp, miniprogram
Wux Weapp
🐶 一套组件化、可复用、易扩展的微信小程序 UI 组件库
Stars: ✭ 4,706 (+26044.44%)
Mutual labels:  wxapp, miniprogram
weapp.request
为微信小程序提供的网络请求组件,是 wx.request 的扩展,基于 Promise API,添加缓存控制
Stars: ✭ 29 (+61.11%)
Mutual labels:  wxapp, miniprogram
Awesome Wechat Weapp
微信小程序开发资源汇总 💯
Stars: ✭ 36,769 (+204172.22%)
Mutual labels:  wxapp, miniprogram
wxapp-computed
在微信小程序中使计算值(computed)
Stars: ✭ 20 (+11.11%)
Mutual labels:  wxapp, miniprogram
quickstart-miniprogram
🎉微信小程序webpack模板
Stars: ✭ 32 (+77.78%)
Mutual labels:  wxapp, miniprogram
talks
Awesome Talks
Stars: ✭ 27 (+50%)
Mutual labels:  watch
wechat-miniprogram-dialog
微信小程序弹窗组件 wxapp dialog component
Stars: ✭ 50 (+177.78%)
Mutual labels:  miniprogram
bulbo
🍹 Generate your static site with gulp plugins!
Stars: ✭ 14 (-22.22%)
Mutual labels:  watch
WX MultiTabList
微信小程序,多个Tab列表的上下拉刷新方案
Stars: ✭ 25 (+38.89%)
Mutual labels:  miniprogram
hwatch
A modern alternative to the watch command, records the differences in execution results and can check this differences at after.
Stars: ✭ 370 (+1955.56%)
Mutual labels:  watch
common-mpvue
使用mpvue开发小程序通用能力封装
Stars: ✭ 31 (+72.22%)
Mutual labels:  wxapp
must-watch
A list of cybai's must-watch videos
Stars: ✭ 19 (+5.56%)
Mutual labels:  watch
mpvue-gesture-lock
微信小程序手势解锁(Dom实现,避免小程序Canvas卡顿问题),基于 Mpvue
Stars: ✭ 34 (+88.89%)
Mutual labels:  miniprogram
Metro-Weapp
微信小程序-上海地铁Lite
Stars: ✭ 15 (-16.67%)
Mutual labels:  wxapp
wxAuthorize
微信授权并获取用户信息demo
Stars: ✭ 44 (+144.44%)
Mutual labels:  wxapp
autorsync
Node.js File Watch + rsync
Stars: ✭ 56 (+211.11%)
Mutual labels:  watch
sudoLite
一款轻巧、趣萌、界面精美,具备统计、排行(即将推出),开源、免费、无广告的数独小程序
Stars: ✭ 55 (+205.56%)
Mutual labels:  wxapp
open-watch
An open-source handmade smartwatch. All of the codes, PCBs and schematics are available. ⌚
Stars: ✭ 35 (+94.44%)
Mutual labels:  watch
miniprogram
微信小程序过审指南
Stars: ✭ 96 (+433.33%)
Mutual labels:  miniprogram

2019.03.13更新

官方已支持数据监听,详情可查看数据监听器
数据监听器可以用于监听和响应任何属性和数据字段的变化。从小程序基础库版本 2.6.1 开始支持。

watch

小程序自定义组件扩展 behavior,watch 属性实现

使用此 behavior 需要依赖小程序基础库 2.2.3 以上版本,同时依赖开发者工具的 npm 构建。具体详情可查阅官方 npm 文档

使用方法

  1. 安装 watch:
npm install --save miniprogram-watch
  1. 作为 behavior 引入
const watchBehavior = require("miniprogram-watch");

Component({
  behaviors: [watchBehavior],
  properties: {
    propA: {
      type: Number,
      value: 0
    }
  },
  data: {
    a: 0,
    b: {
      c: {
        d: 33
      },
      e: [1, 2, [3, 4]]
    }
  },
  // 可以将需要监听的数据放入 watch 里面,当数据改变时推送相应的订阅事件
  // 支持 data 以及 properties 的监听
  watch: {
    propA(val, oldVal) {
      console.log("propA new: %s, old: %s", val, oldVal);
    },
    a(val, oldVal) {
      console.log("a new: %s, old: %s", val, oldVal);
    },
    "b.c.d": function(val, oldVal) {
      console.log("b.c.d new: %s, old: %s", val, oldVal);
    },
    "b.e[2][0]": function(val, oldVal) {
      console.log("b.e[2][0] new: %s, old: %s", val, oldVal);
    },
    "b.e[3][4]": function(val, oldVal) {
      console.log("b.e[3][4] new: %s, old: %s", val, oldVal);
    }
  },
  methods: {
    onTap() {
      this.setData({
        a: 2,
        "b.c.d": 3,
        "b.e[2][0]": 444,
        c: 123
      });
      // 不在 data 里面的数据项不会放入观察者列表,比如这里的'b.e[3][4]'
    }
  }
});
<view>a={{a}}</view>
<view>b.c.d={{b.c.d}}</view>
<view>b.e[2][0]={{b.e[2][0]}}</view>
<view>c={{c}}</view>
<view>prop: {{propA}}</view>
<button bindtap="onTap">click</button>

如何在 Page 里使用 watch

参考:《小程序的奇技淫巧之 watch 观察属性》
Tips: ComponentPage的超集,《使用 Component 构造器构造页面》

事实上,小程序的页面也可以视为自定义组件。因而,页面也可以使用Component构造器构造,拥有与普通组件一样的定义段与实例方法。但此时要求对应json文件中包含usingComponents定义段。

watch 的实现参考

jayZOU/watch

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].