用于双向绑定的表达式有如下限制:
- 只能是一个单一字段的绑定,如
-
目前,尚不能 data 路径,如
<input model:value="{{ a.b }}" />
这样的表达式目前暂不支持。
<input model:value="值为 {{value}}" />
<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
? 的位置也会被一同更新。
在自定义组件中触发双向绑定更新
自定义组件还可以自己触发双向绑定更新,做法就是:使用 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
? 的位置也会被一同更新。
标签:微信小程序
相关阅读 >>
更多相关阅读请进入《微信小程序》频道 >>

Vue.js 设计与实现 基于Vue.js 3 深入解析Vue.js 设计细节
本书对 Vue.js 3 技术细节的分析非常可靠,对于需要深入理解 Vue.js 3 的用户会有很大的帮助。——尤雨溪,Vue.js作者