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