中文字幕日韩精品一区二区免费_精品一区二区三区国产精品无卡在_国精品无码专区一区二区三区_国产αv三级中文在线

小程序使用watch監(jiān)聽數(shù)據(jù)變化的方法詳解

眾所周知,Vue中,可以使用監(jiān)聽屬性 watch來觀察和響應 Vue 實例上的數(shù)據(jù)變化,那么小程序能不能實現(xiàn)這一點呢?

成都創(chuàng)新互聯(lián)是專業(yè)的齊齊哈爾網(wǎng)站建設(shè)公司,齊齊哈爾接單;提供網(wǎng)站設(shè)計、網(wǎng)站制作,網(wǎng)頁設(shè)計,網(wǎng)站設(shè)計,建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務;采用PHP框架,可快速的進行齊齊哈爾網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團隊,希望更多企業(yè)前來合作!

監(jiān)聽器的原理,是將data中需監(jiān)聽的數(shù)據(jù)寫在watch對象中,并給其提供一個方法,當被監(jiān)聽的數(shù)據(jù)的值改變時,調(diào)用該方法。​​

我們需要用到Javascript中的Object.defineProperty()方法,來手動劫持對象的getter/setter,從而實現(xiàn)給對象賦值時(調(diào)用setter),執(zhí)行watch對象中相對應的函數(shù),達到監(jiān)聽效果。

Object.defineProperty()方法,會直接在一個對象上定義一個新屬性,或者修改一個對象的現(xiàn)有屬性, 并返回這個對象。

這里假定有多個頁面需要監(jiān)聽需求,把監(jiān)聽方法寫在app.js中,以便全局調(diào)用

onLaunch: function () {},
// 設(shè)置監(jiān)聽器
watch: function (ctx, obj) {
 Object.keys(obj).forEach(key => {
  this.observer(ctx.data, key, ctx.data[key], function (value) {
   obj[key].call(ctx, value)
  })
 })
},
// 監(jiān)聽屬性,并執(zhí)行監(jiān)聽函數(shù)
observer: function (data, key, val, fn) {
 Object.defineProperty(data, key, {
  configurable: true,
  enumerable: true,
  get: function () {
   return val
  },
  set: function (newVal) {
   if (newVal === val) return
   fn && fn(newVal)
   val = newVal
  },
 })
}

然后,在需要監(jiān)聽的頁面onLoad中,調(diào)用watch方法(其中test是要監(jiān)聽的數(shù)據(jù),當test在其他方法中通過this.setData賦值后,watch就能監(jiān)聽到test的變化了)

const app = getApp()
Page({
 data: {
  test: 0
 },
 onLoad: function () {
  // 調(diào)用監(jiān)聽器,監(jiān)聽數(shù)據(jù)變化
  app.watch(this, {
   test: function (newVal) {
    console.log(newVal)
   }
  })
 }

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持創(chuàng)新互聯(lián)。

分享文章:小程序使用watch監(jiān)聽數(shù)據(jù)變化的方法詳解
分享鏈接:http://www.rwnh.cn/article14/gcggge.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供營銷型網(wǎng)站建設(shè)、微信公眾號品牌網(wǎng)站制作、網(wǎng)站制作標簽優(yōu)化、響應式網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站建設(shè)網(wǎng)站維護公司
霍山县| 华阴市| 房产| 聂荣县| 嵊州市| 南和县| 五寨县| 元谋县| 荣成市| 清徐县| 和田县| 榆中县| 渑池县| 宜城市| 龙江县| 奉新县| 兴仁县| 德化县| 仁寿县| 慈溪市| 马关县| 志丹县| 樟树市| 德庆县| 岑溪市| 肇州县| 洪洞县| 天镇县| 潜江市| 巧家县| 天等县| 搜索| 灵武市| 安阳县| 阿图什市| 葵青区| 甘肃省| 仪征市| 晋宁县| 探索| 柘荣县|