HiShop首頁 > 網(wǎng)上商城系統(tǒng) > 商城建設 > 微信小程序開發(fā)數(shù)據(jù)監(jiān)聽器

微信小程序開發(fā)數(shù)據(jù)監(jiān)聽器

時間:2024-10-26 11:22:00 |閱讀量:

微信小程序數(shù)據(jù)監(jiān)聽器可以用于監(jiān)聽和響應任何屬性和數(shù)據(jù)字段的變化,是在小程序基礎庫版本2.6.1以后開始支持的。下面介紹如何使用數(shù)據(jù)監(jiān)聽器。

1. 使用數(shù)據(jù)監(jiān)聽器

當一些數(shù)據(jù)字段被setData設置時,需要執(zhí)行一些操作。例如,this.data.sum永遠是this.data.numberA與this.data.numberB的和。此時,可以使用數(shù)據(jù)監(jiān)聽器進行實現(xiàn)。使用示例如下:

<Component>{
  attached: function() {
    this.setData({
      numberA: 1,
      numberB: 2,
    })
  },
  observers: {
    'numberA, numberB': function(numberA, numberB) {
      // 在 numberA 或者 numberB 被設置時,執(zhí)行這個函數(shù)
      this.setData({
        sum: numberA + numberB
      })
    }
  }
}</Component>

2. 監(jiān)聽字段語法

數(shù)據(jù)監(jiān)聽器支持監(jiān)聽屬性或內(nèi)部數(shù)據(jù)的變化,可以同時監(jiān)聽多個。一次setData最多觸發(fā)每個監(jiān)聽器一次。同時,監(jiān)聽器可以監(jiān)聽子數(shù)據(jù)字段。示例如下:

<Component>{
  observers: {
    'some.subfield': function(subfield) {
      // 使用 setData 設置 this.data.some.subfield 時觸發(fā)
      // (除此以外,使用 setData 設置 this.data.some 也會觸發(fā))
      subfield === this.data.some.subfield
    },
    'arr[12]': function(arr12) {
      // 使用 setData 設置 this.data.arr[12] 時觸發(fā)
      // (除此以外,使用 setData 設置 this.data.arr 也會觸發(fā))
      arr12 === this.data.arr[12]
    },
    'some.field.**': function(field) {
      // 使用 setData 設置 this.data.some.field 本身或其下任何子數(shù)據(jù)字段時觸發(fā)
      // (除此以外,使用 setData 設置 this.data.some 也會觸發(fā))
      field === this.data.some.field
    },
    '**': function() {
      // 每次 setData 都觸發(fā)
    },
  },
}

如果需要監(jiān)聽所有子數(shù)據(jù)字段的變化,可以使用通配符**。特別地,僅使用通配符**可以同時監(jiān)聽全部setData操作。

提示:數(shù)據(jù)監(jiān)聽器監(jiān)聽的是setData涉及到的數(shù)據(jù)字段,即使這些數(shù)據(jù)字段的值沒有發(fā)生變化,數(shù)據(jù)監(jiān)聽器依然會被觸發(fā)。如果在數(shù)據(jù)監(jiān)聽器函數(shù)中使用setData設置本身監(jiān)聽的數(shù)據(jù)字段,可能會導致死循環(huán),需要特別留意。數(shù)據(jù)監(jiān)聽器和屬性的observer相比,數(shù)據(jù)監(jiān)聽器更強大且通常具有更好的性能。

<本文由himall原創(chuàng),商業(yè)轉(zhuǎn)載請聯(lián)系作者獲得授權,非商業(yè)轉(zhuǎn)載請標明:himall原創(chuàng)>

多用戶商城系統(tǒng)解決方案

滿足不同行業(yè)發(fā)展電商的需求,HiMall更有針對性的提供不同行業(yè)內(nèi)的電商解決方案

  • 跨境電商解決方案

    支持直郵/保稅模式

    對接海關/保稅倉

    支持多國國際語言

    對接Paypal國際支付

    幫助跨境外貿(mào)企業(yè)搭建跨境進口/出口電商平臺,搶占國際電商市場,針對企業(yè)需求定制個性化跨境電商解決方案
    了解跨境方案
  • 分賬解決方案

    迎合金融監(jiān)管要求

    規(guī)避“二清”結算

    節(jié)約平臺財務成本

    降低平臺招商成本

    在合法、合規(guī)的前提下,為電商平臺提供資金收付、賬戶管理、資金合規(guī)等一體化整體解決方案
    了解分賬方案
  • B2B批發(fā)解決方案

    多級階梯批發(fā)價

    布局全渠道批發(fā)入口

    專屬批發(fā)訂貨市場

    銀聯(lián)B2B大額支付

    為企業(yè)快速搭建綜合性B2B批發(fā)電商平臺,整合線下批發(fā)資源,拓展線上批發(fā)渠道,實現(xiàn)批發(fā)業(yè)務24小時在線經(jīng)營
    了解B2B方案
更多電商解決方案>
|2024-10-26猜你喜歡

【本站聲明】 1、本網(wǎng)站發(fā)布的該篇文章,目的在于分享電商知識及傳遞、交流相關電商信息,以便您學習或了解電商知識,請您不要用于其他用途;
2、該篇文章中所涉及的商標、標識的商品/服務并非來源于本網(wǎng)站,更非本網(wǎng)站提供,與本網(wǎng)站無關,系他人的商品或服務,本網(wǎng)站對于該類商標、標識不擁有任何權利;
3、本網(wǎng)站不對該篇文章中所涉及的商標、標識的商品/服務作任何明示或暗示的保證或擔保;
4、本網(wǎng)站不對文章中所涉及的內(nèi)容真實性、準確性、可靠性負責,僅系客觀性描述,如您需要了解該類商品/服務詳細的資訊,請您直接與該類商品/服務的提供者聯(lián)系。

電話咨詢 微信咨詢 0元開店