网站推广.NET

网站推广.NET

终极:#简单的双向绑定

来源:互联网

简单的双向绑定

现在支持基本库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的所有位置也将被更新。