在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
长时间使用VUE,发现v-model确实很好用,用了小程序之后,才发现小程序的双向绑定那么难用,必须有个bindinput来触发改变值。 经过研究发现,小程序的双向绑定也可以实现,但是稍复杂点,思路和大家说一下,最后附代码: 1、利用bindinput来触发改变 2、利用data-name来绑定获取的数据 3、bindinput触发时利用event获取,name的值,然后用this.setData改变data-name绑定的参数。 4、利用data-name中间属性来动态指定对象还是非对象,入data-name="login"或data-name="login.username",这样可以根据中间有没有.来判断是对象还是直接参数 5、将方法拆出来,动态引入,哪个页面用引入到哪个页面 代码如下: module.exports = { inputgetName(e){ let name = e.currentTarget.dataset.name; let nameMap = {} if(name.indexOf('.')){ let nameList = name.split('.') if(this.data[nameList[0]]){ nameMap[nameList[0]] = this.data[nameList[0]] }else{ nameMap[nameList[0]] = {} } nameMap[nameList[0]][nameList[1]] = e.detail.value }else{ nameMap[name] = e.detail.value } console.log(nameMap) this.setData(nameMap) } } const successService = require('../../request/successService.js') var commonMixin = require('../../mixins/commonMixin') Page(Object.assign({ /** * 页面的初始数据 */ data: { login:{} }, formSubmit (e) {// 提交 // console.log('form发生了submit事件,携带数据为:', e.detail.value) console.log(this.data.login) console.log(e) wx.switchTab({ url: '../index/index' }) }, /** * 用户点击右上角分享 */ onShareAppMessage: function () { console.log('分享') } },commonMixin))
使用时: <input type='number' placeholder='请输入用户名' maxlength="11" bindinput="inputgetName" data-name='login.username' value='{{login.username}}'/> 动态的是这个地方:bindinput="inputgetName" data-name='login.username',bindinput触发改变,data-name传入动态参数 |
请发表评论