分享:50行代码监听watch小程序的globalData
监听方法:
// 在任何组件、页面,例如页面
const app = getApp( );
Page({
onLoad: function( ) {
app.watch$('role', ( val, old ) => {
console.log( old, val ); // 此处输出 1, 2
})
},
});
使用方法(触发watch):
// 在任何组件、页面,例如页面
const app = getApp( );
app.setGlobalData({
role: 2
})
在根目录的 app.js
App({
/** 全局store */
globalData: {
role: 1
},
/** 监听函数的对象数组 */
watchCallBack: { },
/** 监听列表 */
watchingKeys: [ ],
/** 初始化 */
init: function( ) {
// 全局数据
this.globalData$ = Object.assign({ }, this.globalData );
},
/** 设置全局数据 */
setGlobalData: function( obj ) {
Object.keys( obj ).map( key => {
this.globalData[ key ] = obj[ key ];
});
},
/** watch函数 */
watch$( key, cb ) {
this.watchCallBack = Object.assign({}, this.watchCallBack, {
[key]: this.watchCallBack[ key ] || [ ]
});
this.watchCallBack[ key ].push( cb );
if ( !this.watchingKeys.find( x => x === key )) {
const that = this;
this.watchingKeys.push( key );
Object.defineProperty( this.globalData, key, {
configurable: true,
enumerable: true,
set: function( val ) {
const old = that.globalData$[key];
that.globalData$[ key ] = val;
that.watchCallBack[key].map(func => func( val, old ));
},
get: function( ) {
return that.globalData$[key];
}
});
}
},
});
分享:50行代码监听watch小程序的globalData的更多相关文章
- 某拍sig算法揭秘---50行代码下载5000万小姐姐自拍小视频
背景: 首先我们需要一点点python基础,比如可以运行类似下面的代码 import requests headers={ "xxx":"xxx", ...
- python爬虫实战:利用scrapy,短短50行代码下载整站短视频
近日,有朋友向我求助一件小事儿,他在一个短视频app上看到一个好玩儿的段子,想下载下来,可死活找不到下载的方法.这忙我得帮,少不得就抓包分析了一下这个app,找到了视频的下载链接,帮他解决了这个小问题 ...
- miniui 给表格行添加监听事件的几种方法以及点击某列列名数据不能排序的问题
最近在使用miniui框架做开发,在做表格行的点击监听事件中发现了几个属性,都可以起到监听效果但是执行的结果却大有不同.好了废话不多说,直接上代码. <div id="pageGrid ...
- Html5游戏开发-145行代码完成一个RPG小Demo
lufy前辈写过<[代码艺术]17行代码的贪吃蛇小游戏>一文,忽悠了不少求知的兄弟进去阅读,阅读量当然是相当的大.今天我不仿也搞一个这样的教程,目地不在于忽悠人,而在于帮助他人. 先看de ...
- 50行代码实现python计算器主要功能
实现功能:计算带有括号和四则运算的式子 3*( 4+ 50 )-(( 100 + 40 )*5/2- 3*2* 2/4+9)*((( 3 + 4)-4)-4) 基本思路:使用正则表达式提取出每一层 ...
- [置顶]
几行代码实现ofo首页小黄人眼睛加速感应转动
最新版的ofo 小黄车的首页小黄人眼睛随重力而转动,感觉有点炫酷,学习一下吧,以下代码是在xamarin android下实现 ofo首页效果图: xamarin android实现效果: 实现思路: ...
- 50行代码实现缓存,JAVA内存模型原理
遇见这样的高人怎么办??下面是一个简单缓存的实现,相当牛叉!自己看吧,只有50行代码. 摘自:http://www.oschina.net/code/snippet_55577_3887 import ...
- HTML5游戏实战(1):50行代码实现正面跑酷游戏
前段时间看到一个"熊来了"的HTML5跑酷游戏,它是一个典型的正面2D跑酷游戏,这里借用它来介绍一下用Gamebuilder+CanTK开发正面跑酷游戏的基本方法. CanTK(C ...
- 50行代码实现GAN | 干货演练
2014年,Ian Goodfellow和他的同事发表了一篇论文,向世界介绍了生成对抗网络(GAN).通过对计算图和博弈论的创新性组合,他们表明如果有足够的建模能力,两个相互对抗的模型可以通过普通的反 ...
随机推荐
- NoSQL入门第一天——NoSQL入门与基本概述
一.课程大纲 二.入门概述 1.为什么用NoSQL 单机MySQL的年代: 一个网站的访问量一般都不大,用单个数据库完全可以轻松应付. 我们来看看数据存储的瓶颈是什么? 1.数据量的总大小 一个机器放 ...
- 20155204 2016-2017-2 《Java程序设计》第10周学习总结
20155204 2016-2017-2 <Java程序设计>第10周学习总结 教材学习内容总结 1.计算机网络概述 路由器和交换机组成了核心的计算机网络,计算机只是这个网络上的节点以及控 ...
- Java程序设计 第16周 课堂实践 —— 数据库3
Java程序设计 第16周 课堂实践 -- 数据库3 课堂实践任务3 查询world数据库,获得New Jessey州所有城市的总人口数. 代码分析 实现查询数据库需要我们修改MessageDAO.j ...
- 20155220 实验四 Android开发基础
20155220 实验四 Android开发基础 实验内容 (一)Android Stuidio的安装测试: 参考<Java和Android开发学习指南(第二版)(EPUBIT,Java for ...
- 20155229 2016-2017-2 《Java程序设计》第三周学习总结
20155229 2016-2017-2 <Java程序设计>第三周学习总结 教材学习内容总结 第四章 BigDecimal提供有plus().substract().multiply() ...
- spring_cloud多个微服务访问时偶发forward_error问题
1.问题: 最近在做SpringBoot项目的时候,有多个分开的微服务,偶发forward error 问题 2.猜想: 个人理解为服务跳转错误,可能本身没找到目标服务,或者目标服务损坏 3.解决: ...
- sql语句-2-字符串数字日期时间
- RHCSA-day3
10.配置LDAP客户端 在classroom.example.com上已经部署了一台LDAP认证服务器,按以下要求将你的系统加入到该LDAP服务中,并使用Kerberos认证用户密码: 该LDAP认 ...
- SaltStack入门篇(三)之数据系统Grains、Pillar
1.什么是Grains? Grains是saltstack的组件,用于收集salt-minion在启动时候的信息,又称为静态信息.可以理解为Grains记录着每台Minion的一些常用属性,比如CPU ...
- springboot之oauth2
一.OAuth2.0是OAuth协议的延续版本,但不向后兼容OAuth 1.0即完全废止了OAuth1.0. OAuth 2.0关注客户端开发者的简易性.要么通过组织在资源拥有者和HTTP服务商之间的 ...