简单的双向绑定
现在支持基本库2.9.3,并且较低版本需要兼容。
双向绑定语法
在WXML中,普通属性的绑定是单向的。例如:
value="{{value}}" />
如果使用this.setData({value:'leaf'})更新值,则this.data.value和输入框中显示的值将更新为leaf;但是如果用户修改了输入框中的值,但不会同时更改this.data.value。
如果在用户输入时需要更改this.data.value,则需要使用简单的双向绑定机制。此时,您可以在相应项目之前添加model:前缀:
这样,如果更改输入框的值,则this.data.value也将同时更改。同时,WXML中绑定到值的所有位置都将一起更新,并且数据侦听器将正常触发。
预览开发人员工具中的效果
用于双向绑定的表达式具有以下限制:
它只能是单个字段的绑定,例如
所有都是非法的;
当前,数据路径尚不可用,例如
当前不支持此类表达式。
在自定义组件中传输双向绑定
双向绑定也可以在自定义组件上使用。以下自定义组件:
// custom-component.jsComponent({ properties: { myValue: String }})
此自定义组件将其myValue属性绑定到组件中输入框的value属性。因此,如果页面使用此组件是这样的:
更改输入框的值时,定制组件的myValue属性将同时更改,因此页面的this.data.pageValue也将同时更改,并且所有页面WXML中与pageValue绑定的位置也将一起更新。
在自定义组件中触发双向绑定更新
自定义组件还可以自行触发双向绑定更新。方法是使用setData设置自己的属性。例如:
// custom-component.jsComponent({ properties: { myValue: String }, methods: { update: function() { // 更新 myValue this.setData({ myValue: 'leaf' }) } }})
如果页面像这样使用此组件:
当组件使用setData更新myValue时,页面的this.data.pageValue也将同时更改,并且页面WXML中绑定到pageValue的所有位置也将被更新。