在 WXML 中,普通屬性的綁定是單向的,比如 <input value="{{ value }}" />
,當數據發生改變時,頁面也會隨之發生變化,但是當用戶在輸入框中輸入最新內容,最新內容并不會同步給 value 數據,這就是單向數據綁定;
如果希望用戶輸入數據的同時修改 data 中的數據,可以借助簡單雙向綁定機制,在對應屬性之前添加 model: 前綴即可:例如 <input model:value="{{ value }}" />
;
注意事項:簡易雙向綁定的屬性值有如下限制:
- 只能是一個單一字段的綁定,如:錯誤用法:
<input model:value="值為 {{ value }}" />
; - 不能寫 data 路徑,也就是不支持數組和對象,例如:錯誤用法:
<input model:value="{{ a.b }}" />
;
下面打開微信開發者工具演示一下如何進行簡單雙向數據綁定:
在 pages/cate/cate.js 中定義數據,如下所示:
Page({data: {value: 123,isChecked: false}
})
在 pages/cate/cate.wxml 中定義頁面樣式,如下所示:
<!-- 單向綁定:數據能夠影響頁面,但是頁面更新不會影響到數據 -->
<input type="text" value="{{ value }}"/><!-- 雙向綁定:數據能夠影響頁面,頁面更新也能夠影響數據 -->
<input type="text" model:value="{{ value }}"/><!-- 如果需要獲取復選框的選中效果,需要給 checked 添加 model: -->
<checkbox model:checked="{{ isChecked }}"/> 是否同意該協議
刷新頁面,可以看到具體的效果如下:
當修改頁面上的值的時候,通過觀看右下角的 AppData 的值可以發現,Page 中對應的數據也相應被修改了,實現了簡單的雙向數據綁定;
參考視頻:尚硅谷微信小程序開發教程