微信小程序input双向数据绑定,解决每一个input都需要bindinput方法

 

1.通过标签属性data来绑定data中的参数key

2.通过bandinput获取key值

3.通过模板字符串赋值给data中的值

wxml:

 <view class="row">
   <view class="label">产品名称</view>
   <view class="value">
         <input value="{{ goodsName }}" bindinput="bindKeyInput" data-params="goodsName" placeholder='请填写产品名称' placeholder-class='placeholder' />
   </view>
 </view>
 <view class="row">
    <view class="label">产品价格</view>
    <view class="value">
       <input value="{{ goodsPrice }}" type="digit" bindinput="bindKeyInput" data-params="goodsPrice" placeholder='请填写产品价格' placeholder-class='placeholder' />
     </view>
 </view>

js:

data: {
        goodsName:"",
        goodsPrice:"",
},
bindKeyInput(e){
      console.log(e)
    this.setData({
        [`${e.currentTarget.dataset.params}`]:e.detail.value
    })
    console.log(`商品名称:${this.data.goodsName},商品价格:${this.data.goodsPrice}`)
 },

### 微信小程序 Input 组件双向绑定实现 在微信小程序中,`<input>`组件可以通过特定的方式实现类似于 Vue.js 的双向数据绑定效果。虽然微信小程序并没有像 Vue.js 那样内置完整的双向绑定支持,但是通过合理利用 `bindinput` 和 `this.setData()` 方法可以达到相同的效果。 #### 使用 bindinput 属性监听输入事件并更新数据 为了使 `<input>` 能够响应用户的键盘输入,并实时同步到页面的数据模型中,可以在 WXML 文件里为 `<input>` 添加 `bindinput="handleInputChange"` 来指定当用户修改输入框内容时触发的方法名[^3]: ```xml <input type="text" value="{{inputValue}}" bindinput="handleChange"/> ``` 这里定义了一个名为 `handleChange` 的处理函数用于接收来自视图层的变化通知。 #### 更新数据模型中的值 接着,在对应的 JS 文件内编写该处理器逻辑,每当检测到输入改变就调用 `this.setData({})` 将新的字符串赋给变量 `inputValue` ,从而完成从 UI 到内存状态的一次映射过程[^4]: ```javascript Page({ data: { inputValue: '' }, handleChange(e){ const {value} = e.detail; this.setData({ inputValue: value }); } }) ``` 上述代码片段展示了如何捕获表单控件发出的 change 事件,并把最新的文本串存入 Page 对象下的 `data.inputValue` 字段之中;与此同时,由于初始渲染阶段已经绑定了此字段至 HTML 元素上,所以界面上也会立即反映出最新更改后的结果。 这样便完成了整个循环链路——即由 View 触发 Controller 更改 Model 后再反馈回 View 显示的过程,形成了所谓的“伪·双向绑定”。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值