W3Cschool
恭喜您成為首批注冊用戶
獲得88經驗值獎勵
基礎庫 2.9.3 開始支持,低版本需做兼容處理。
在 WXML 中,普通的屬性的綁定是單向的。例如:
<input value="{{value}}" />
如果使用 ?this.setData({ value: 'leaf' })
? 來更新 ?value
? ,?this.data.value
? 和輸入框的中顯示的值都會被更新為 leaf ;但如果用戶修改了輸入框里的值,卻不會同時改變 ?this.data.value
? 。
如果需要在用戶輸入的同時改變 ?this.data.value
? ,需要借助簡易雙向綁定機制。此時,可以在對應項目之前加入 ?model
?: 前綴:
<input model:value="{{value}}" />
這樣,如果輸入框的值被改變了, ?this.data.value
? 也會同時改變。同時, WXML 中所有綁定了 ?value
? 的位置也會被一同更新, 數(shù)據(jù)監(jiān)聽器 也會被正常觸發(fā)。
用于雙向綁定的表達式有如下限制:
<input model:value="值為 {{value}}" />
<input model:value="{{ a + b }}" />
都是非法的;
目前,尚不能 data 路徑,如
<input model:value="{{ a.b }}" />
這樣的表達式目前暫不支持。
雙向綁定同樣可以使用在自定義組件上。如下的自定義組件:
// custom-component.js
Component({
properties: {
myValue: String
}
})
<!-- custom-component.wxml -->
<input model:value="{{myValue}}" />
這個自定義組件將自身的 ?myValue
? 屬性雙向綁定到了組件內輸入框的 ?value
? 屬性上。這樣,如果頁面這樣使用這個組件:
<custom-component model:my-value="{{pageValue}}" />
當輸入框的值變更時,自定義組件的 ?myValue
? 屬性會同時變更,這樣,頁面的 ?this.data.pageValue
? 也會同時變更,頁面 WXML 中所有綁定了 ?pageValue
? 的位置也會被一同更新。
自定義組件還可以自己觸發(fā)雙向綁定更新,做法就是:使用 setData 設置自身的屬性。例如:
// custom-component.js
Component({
properties: {
myValue: String
},
methods: {
update: function() {
// 更新 myValue
this.setData({
myValue: 'leaf'
})
}
}
})
如果頁面這樣使用這個組件:
<custom-component model:my-value="{{pageValue}}" />
當組件使用 ?setData
? 更新 ?myValue
? 時,頁面的 ?this.data.pageValue
? 也會同時變更,頁面 WXML 中所有綁定了 ?pageValue
? 的位置也會被一同更新。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: