微信小程序開(kāi)發(fā)數(shù)據(jù)監(jiān)聽(tīng)器
微信小程序數(shù)據(jù)監(jiān)聽(tīng)器可以用于監(jiān)聽(tīng)和響應(yīng)任何屬性和數(shù)據(jù)字段的變化,是在小程序基礎(chǔ)庫(kù)版本2.6.1以后開(kāi)始支持的。下面介紹如何使用數(shù)據(jù)監(jiān)聽(tīng)器。
1. 使用數(shù)據(jù)監(jiān)聽(tīng)器
當(dāng)一些數(shù)據(jù)字段被setData設(shè)置時(shí),需要執(zhí)行一些操作。例如,this.data.sum永遠(yuǎn)是this.data.numberA與this.data.numberB的和。此時(shí),可以使用數(shù)據(jù)監(jiān)聽(tīng)器進(jìn)行實(shí)現(xiàn)。使用示例如下:
<Component>{
attached: function() {
this.setData({
numberA: 1,
numberB: 2,
})
},
observers: {
'numberA, numberB': function(numberA, numberB) {
// 在 numberA 或者 numberB 被設(shè)置時(shí),執(zhí)行這個(gè)函數(shù)
this.setData({
sum: numberA + numberB
})
}
}
}</Component>
2. 監(jiān)聽(tīng)字段語(yǔ)法
數(shù)據(jù)監(jiān)聽(tīng)器支持監(jiān)聽(tīng)屬性或內(nèi)部數(shù)據(jù)的變化,可以同時(shí)監(jiān)聽(tīng)多個(gè)。一次setData最多觸發(fā)每個(gè)監(jiān)聽(tīng)器一次。同時(shí),監(jiān)聽(tīng)器可以監(jiān)聽(tīng)子數(shù)據(jù)字段。示例如下:
<Component>{
observers: {
'some.subfield': function(subfield) {
// 使用 setData 設(shè)置 this.data.some.subfield 時(shí)觸發(fā)
// (除此以外,使用 setData 設(shè)置 this.data.some 也會(huì)觸發(fā))
subfield === this.data.some.subfield
},
'arr[12]': function(arr12) {
// 使用 setData 設(shè)置 this.data.arr[12] 時(shí)觸發(fā)
// (除此以外,使用 setData 設(shè)置 this.data.arr 也會(huì)觸發(fā))
arr12 === this.data.arr[12]
},
'some.field.**': function(field) {
// 使用 setData 設(shè)置 this.data.some.field 本身或其下任何子數(shù)據(jù)字段時(shí)觸發(fā)
// (除此以外,使用 setData 設(shè)置 this.data.some 也會(huì)觸發(fā))
field === this.data.some.field
},
'**': function() {
// 每次 setData 都觸發(fā)
},
},
}
如果需要監(jiān)聽(tīng)所有子數(shù)據(jù)字段的變化,可以使用通配符**。特別地,僅使用通配符**可以同時(shí)監(jiān)聽(tīng)全部setData操作。
提示:數(shù)據(jù)監(jiān)聽(tīng)器監(jiān)聽(tīng)的是setData涉及到的數(shù)據(jù)字段,即使這些數(shù)據(jù)字段的值沒(méi)有發(fā)生變化,數(shù)據(jù)監(jiān)聽(tīng)器依然會(huì)被觸發(fā)。如果在數(shù)據(jù)監(jiān)聽(tīng)器函數(shù)中使用setData設(shè)置本身監(jiān)聽(tīng)的數(shù)據(jù)字段,可能會(huì)導(dǎo)致死循環(huán),需要特別留意。數(shù)據(jù)監(jiān)聽(tīng)器和屬性的observer相比,數(shù)據(jù)監(jiān)聽(tīng)器更強(qiáng)大且通常具有更好的性能。
-
B2B2C多用戶商城系統(tǒng)支持企業(yè)自營(yíng)與商戶入駐模式共存 會(huì)員一站式精細(xì)化營(yíng)銷工具 多用戶分銷,帶來(lái)爆發(fā)式增長(zhǎng)
系統(tǒng)支持平臺(tái)自營(yíng)+供應(yīng)商店鋪共存的經(jīng)營(yíng)模式(類天貓&京東模式),幫助企業(yè)打造生態(tài)級(jí)商業(yè)平臺(tái)為目的的電子商務(wù)系統(tǒng)。
免費(fèi)試用系統(tǒng) -
B2B2B電商交易系統(tǒng)優(yōu)化供應(yīng)鏈協(xié)作 授信及賬期支付 商品按照數(shù)量階梯設(shè)價(jià)
全渠道訂貨/采購(gòu)及經(jīng)銷商管理數(shù)字化系統(tǒng),實(shí)現(xiàn)供應(yīng)鏈整合和交易便捷化。
免費(fèi)試用系統(tǒng) -
S2B2B電商交易系統(tǒng)供銷一體化,提高市場(chǎng)集中度 集團(tuán)管控一體化,有效實(shí)現(xiàn)供需匹配 移動(dòng)應(yīng)用一體化,提高運(yùn)營(yíng)綜合效率
上下游資源整合數(shù)字化解決方案,賦能產(chǎn)業(yè)供應(yīng)鏈,構(gòu)建產(chǎn)業(yè)互聯(lián)網(wǎng)生態(tài)體系。
免費(fèi)試用系統(tǒng)
