单向绑定语法
在微信小程序的规则中,例子:input
标签中的数据为单向绑定,无法像Vue框架中的v-model
直接进行input
的双向绑定。
解析:
如果使用双向绑定解决方案:this.setData({ value: 'leaf' })
来更新value
,this.data.value
和输入框的中显示的值都会被更新为leaf
;但如果用户修改了输入框里的值,却不会改变this.data.value
。
文章图片
利用bindinput记录下input框中每次输入的值。
【小程序|微信小程序双向数据绑定】wxml代码:
js代码:
1 Page({
2data: {
3searchCode: null
4},
5getSearchInput(e) {
6this.searchCode = e.detail.value;
7},
8getSearchValue() {
9this.getSaveSearchValue('searchCode', this.searchCode)
10},
11// 存值入栈
12getSaveSearchValue(name, value) {
13var data = https://www.it610.com/article/{};
14data[name] = value;
15this.setData(data)
16},
17 })
解决思路:利用小程序中的bindinput方法,记录每次输入的值,并将值暂时存入一个全局变量中。 再利用bindblur记录下Input框每次失去焦点时的最终值,并赋值给data中。简单版:借助 input 组件的 bindinput 属性,每次输入值触发函数更新来完成
wxml:
数据:{{ message }}
js:
Page({/*
* 事件处理
*/
data: {
message: ''//用户输入框数据
},/*
* 事件处理
*//*
* 【当用户输入数据时(每当)就会触发函数】
* 设置了bindinput属性后会返回对象(e)
* 你也可以先console一下e对象看看是什么
* 然后通过e对象获取输入框value值
* 最后setDate实时更新到message上
*/
messageChang: function(e) {// 获取输入框当前value值
let value = https://www.it610.com/article/e.detail.value// 及时更新数据
this.setData({
message: value
})
}})
极简版(
有局限性慎用,后面会提到
)对应属性前加入model:前缀:
用户输入的同时改变 this.data.value局限性:
与vue相比,暂不支持表达式形式,如下
data: {
a:{b:'hello'}
}
推荐阅读
- 微信小程序(黑马)|【微信小程序】运行机制和更新机制
- 微信小程序|微信小程序input双向数据绑定,解决每一个input都需要bindinput方法
- 数据结构|JavaScript数据结构——队列(Queue)
- 《微信小程序》开发 问题记录
- js|逆向日记之发票查验平台网站js逆向分析及逆向算法
- 前端|小程序内部引导关注公众号实现方法
- 前端|微信小程序如何实现转发/分享功能
- 马哥源码资讯|微擎模块 同城黑卡小程序4.6.0后台模块+前端小程序
- 小程序源码|小程序源码(社群微群人脉系统-多玩法安装简单)