内射老阿姨1区2区3区4区_久久精品人人做人人爽电影蜜月_久久国产精品亚洲77777_99精品又大又爽又粗少妇毛片

小程序使用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)站維護公司
屯门区| 江北区| 砀山县| 宜城市| 灌南县| 江阴市| 平原县| 廊坊市| 义马市| 河曲县| 大安市| 原平市| 昌乐县| 长岭县| 随州市| 襄樊市| 东平县| 徐州市| 周宁县| 华安县| 泸溪县| 石泉县| 达孜县| 凤庆县| 游戏| 惠州市| 九江市| 湟源县| 林芝县| 彩票| 蚌埠市| 城固县| 信阳市| 凯里市| 广德县| 诸城市| 井研县| 腾冲县| 黑山县| 大方县| 班玛县|