如和讓微信小程序?qū)崿F(xiàn)對(duì)象屬性雙向數(shù)據(jù)綁定

核心方法

寫(xiě)一個(gè)下面的js方法,名稱(chēng)可以任意取,用于綁定input輸入

bindInput(e){
    // 表單雙向數(shù)據(jù)綁定
    var that = this;
    var dataset = e.currentTarget.dataset;
    // data-開(kāi)頭的是自定義屬性,可以通過(guò)dataset獲取到,dataset是一個(gè)json對(duì)象
    var name = dataset.name;
    
    var value = e.detail.value;
    // 拼接對(duì)象屬性名,用于為對(duì)象屬性賦值
    var attributeName = 'applyFormObject.' + name
    that.data[name] = value;
    that.setData({
      [attributeName]: that.data[name]
    });
    // console.log(that.data[name])
  },

其中需要更改的地方只有applyFormObject,這是一個(gè)在data中定義的對(duì)象

Page({
  data: {
    applyFormObject: {
      name: '',
      phone: ''
    }
});

通過(guò)dataset獲取到自定義的data-xxx屬性值,該屬性值就是input綁定的屬性名稱(chēng),比如data-name="phone"就等同于<input type="text" name="phone">中的name屬性,var name = dataset.name;獲取到屬性的值以后在拼接對(duì)象名稱(chēng),通過(guò)that.setData方法完成對(duì)象屬性賦值,便實(shí)現(xiàn)了對(duì)象屬性的雙向數(shù)據(jù)綁定。

如何使用

在小程序的wxml中定義data-name值對(duì)應(yīng)對(duì)象屬性名,然后在定義bindinput值對(duì)應(yīng)剛剛的方法名稱(chēng),即可將input的值實(shí)時(shí)綁定到對(duì)象applyFormObject的屬性上,方便表單提交。

<view class="form-item">
   <input class="input" bindinput="bindInput" data-name="name" placeholder="請(qǐng)輸入姓名" auto-focus/>
 </view>

<view class="form-item">
  <input type="number" class="input" maxlength="11" bindinput="bindInput" data-name="phone" placeholder="請(qǐng)輸入手機(jī)號(hào)碼" />
</view>
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀(guān)點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容