最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解微信小程序中數(shù)據(jù)雙向綁定如何實(shí)現(xiàn)

 更新時(shí)間:2023年05月30日 08:46:24   作者:會(huì)編碼的派大星  
最近在小程序的開發(fā)過程中,需要用到雙向綁定,遇到報(bào)錯(cuò)才知道微信本身是不支持對(duì)象雙向綁定的,鏖戰(zhàn)一番找到解決方案,下面這篇文章主要給大家介紹了關(guān)于微信小程序中數(shù)據(jù)雙向綁定如何實(shí)現(xiàn)的相關(guān)資料,需要的朋友可以參考下

前言

官方文檔:微信小程序雙向綁定語法

在 WXML 中,普通的屬性的綁定是單向的。例如:

<input value="{<!--{C}%3C!%2D%2D%20%2D%2D%3E-->{value}}" />

如果使用 this.setData({ value: ‘leaf’ }) 來更新 value ,this.data.value 和輸入框的中顯示的值都會(huì)被更新為 leaf ;但如果用戶修改了輸入框里的值,卻不會(huì)同時(shí)改變 this.data.value 。

如果需要在用戶輸入的同時(shí)改變 this.data.value ,需要借助簡(jiǎn)易雙向綁定機(jī)制。此時(shí),可以在對(duì)應(yīng)項(xiàng)目之前加入 model: 前綴:

<input model:value="{<!--{C}%3C!%2D%2D%20%2D%2D%3E-->{value}}" />

這樣,如果輸入框的值被改變了, this.data.value 也會(huì)同時(shí)改變。同時(shí), WXML 中所有綁定了 value 的位置也會(huì)被一同更新, 數(shù)據(jù)監(jiān)聽器 也會(huì)被正常觸發(fā)。

一、通過 input 的 bindinput 事件實(shí)現(xiàn)

這里建議吧 bindinput 換成 bindblur 在輸入框失去光標(biāo)時(shí)再去賦值。

官方解釋:setData 都會(huì)觸發(fā)邏輯層虛擬 DOM 樹的遍歷和更新,也可能會(huì)導(dǎo)致觸發(fā)一次完整的頁面渲染流程。

合理使用 setData 官方文檔

WXML 代碼

<view class="my-page">
  <form catchsubmit="formSubmit">
    <view class="form-item">
      <view class="form-label">昵稱</view>
      <view class="form-input">
        <input type="text" value="{{ form.nickName }}" data-prop="form.nickName" bindinput="BindInput" placeholder="請(qǐng)輸入昵稱" />
      </view>
    </view>
    <view class="form-item">
      <view class="form-label">簡(jiǎn)介</view>
      <view class="form-input">
        <input type="text" value="{{ form.introduce }}" data-prop="form.introduce" bindinput="BindInput" placeholder="請(qǐng)輸入簡(jiǎn)介" />
      </view>
    </view>
    <view class="btn-area">
      <button style="margin: 30rpx auto" type="primary" formType="submit">Submit</button>
    </view>
  </form>
</view>

TS 代碼

Page({
  data: {
    form: {
      nickName: ''
    }
  },
  onLoad() { },
  onReady() { },
  formSubmit() {
    console.log(this.data.form)
  },
  BindInput(e: any) {
    this.setData({
      [`${e.currentTarget.dataset.prop}`]: e.detail.value
    })
  }
})

輸出結(jié)果

二、通過 model:value 實(shí)現(xiàn)

WXML 代碼

<view class="my-page">
  <form catchsubmit="formSubmit">
    <view class="form-item">
      <view class="form-label">昵稱</view>
      <view class="form-input">
        <input name="nickName" type="text" model:value="{{ form.nickName }}" placeholder="請(qǐng)輸入昵稱" />
      </view>
    </view>
    <view class="form-item">
      <view class="form-label">簡(jiǎn)介</view>
      <view class="form-input">
        <input name="introduce" type="text" model:value="{{ form.introduce }}" placeholder="請(qǐng)輸入簡(jiǎn)介" />
      </view>
    </view>
    <view class="btn-area">
      <button style="margin: 30rpx auto" type="primary" formType="submit">Submit</button>
    </view>
  </form>
</view>

TS 代碼

Page({
  data: {
    form: {
      nickName: '',
      introduce: '',
    },
  },
  onLoad() { },
  onReady() { },
  formSubmit(e: any) {
    this.setData({
      form: e.detail.value
    })
    console.log(this.data.form);
  },
})

輸出結(jié)果

WXSS 代碼

.my-page {
  padding: 30rpx;
}
.form-item {
  display: flex;
  align-items: center;
  height: 80rpx;
  line-height: 80rpx;
  border-bottom: 1rpx solid #eee;
}
.form-item .form-label {
  height: 100%;
  width: 180rpx;
  text-align: center;
}
.form-item .form-input {
  width: calc(100% - 180rpx);
}
.form-item .form-input input {
  width: 100%;
  height: 80rpx;
}

總結(jié)

到此這篇關(guān)于微信小程序中數(shù)據(jù)雙向綁定如何實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)微信小程序數(shù)據(jù)雙向綁定內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • JS 跳轉(zhuǎn)頁面延遲2種方法

    JS 跳轉(zhuǎn)頁面延遲2種方法

    js跳轉(zhuǎn)頁面想必大家不會(huì)很陌生吧,在瀏覽頁面的時(shí)候經(jīng)常會(huì)碰到這種現(xiàn)象存在如果可以延遲的話是不是會(huì)更委婉一點(diǎn)呢,接下來為大家介紹下如何實(shí)現(xiàn),感興趣的朋友可以參考下哈
    2013-03-03
  • bootstrap table合并行數(shù)據(jù)并居中對(duì)齊效果

    bootstrap table合并行數(shù)據(jù)并居中對(duì)齊效果

    這篇文章主要為大家詳細(xì)介紹了bootstrap table合并行數(shù)據(jù)并居中對(duì)齊效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-10-10
  • 在小程序中使用Echart圖表的示例代碼

    在小程序中使用Echart圖表的示例代碼

    這篇文章主要介紹了在小程序中使用Echart圖表的示例代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-08-08
  • JavaScript常用的3種彈出框(提示框?alert/確認(rèn)框?confirm/輸入框?prompt)

    JavaScript常用的3種彈出框(提示框?alert/確認(rèn)框?confirm/輸入框?prompt)

    三種彈框在系統(tǒng)中都是同步執(zhí)行的,也就是說,三種彈框中的任一彈框彈出,代碼都不在執(zhí)行,直到點(diǎn)擊確認(rèn)或取消,關(guān)閉彈窗后,代碼繼續(xù)執(zhí)行,本文通過實(shí)例代碼給大家分享JS常用的3種彈出框,感興趣的朋友一起看看吧
    2022-07-07
  • DIV層之拖動(dòng)、關(guān)閉、打開效果代碼

    DIV層之拖動(dòng)、關(guān)閉、打開效果代碼

    非常不錯(cuò)的效果,適合在當(dāng)前頁打開測(cè)試窗口,圖片等
    2008-09-09
  • JS+css 圖片自動(dòng)縮放自適應(yīng)大小

    JS+css 圖片自動(dòng)縮放自適應(yīng)大小

    編輯器上傳的圖片太大了,把FF和IE撐的走形,所以希望圖片在某些頁面里要有固定大小,如果需要某個(gè)范圍,用getElementByname來設(shè)定,也是一個(gè)道理:
    2013-08-08
  • JS獲取隨機(jī)數(shù)和時(shí)間轉(zhuǎn)換的簡(jiǎn)單實(shí)例

    JS獲取隨機(jī)數(shù)和時(shí)間轉(zhuǎn)換的簡(jiǎn)單實(shí)例

    下面小編就為大家?guī)硪黄狫S獲取隨機(jī)數(shù)和時(shí)間轉(zhuǎn)換的簡(jiǎn)單實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-07-07
  • 利用D3.js實(shí)現(xiàn)最簡(jiǎn)單的柱狀圖示例代碼

    利用D3.js實(shí)現(xiàn)最簡(jiǎn)單的柱狀圖示例代碼

    D3.js是一個(gè)基于數(shù)據(jù)操作文檔JavaScript庫(kù)。D3幫助你給數(shù)據(jù)帶來活力通過使用HTML、SVG和CSS。D3重視Web標(biāo)準(zhǔn)為你提供現(xiàn)代瀏覽器的全部功能,而不是給你一個(gè)專有的框架。最近在學(xué)習(xí)D3.js,這個(gè)例子是通過d3.js畫一個(gè)簡(jiǎn)單的柱狀圖。下面來一起看看吧。
    2016-12-12
  • uniapp??微信跳轉(zhuǎn)至半屏的使用示例

    uniapp??微信跳轉(zhuǎn)至半屏的使用示例

    這篇文章主要介紹了uniapp??微信跳轉(zhuǎn)至半屏的使用示例,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2024-08-08
  • javascript實(shí)現(xiàn)瀑布流加載圖片原理

    javascript實(shí)現(xiàn)瀑布流加載圖片原理

    這篇文章主要為大家介紹了javascript實(shí)現(xiàn)瀑布流加載圖片效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-02-02

最新評(píng)論

白银市| 惠来县| 沂源县| 衢州市| 安西县| 长阳| 固阳县| 日照市| 凤山县| 镇远县| 元氏县| 尖扎县| 娱乐| 雅江县| 永城市| 手游| 宁强县| 甘肃省| 江门市| 庆安县| 罗城| 广昌县| 留坝县| 蛟河市| 麻江县| 巴里| 集贤县| 靖远县| 漳州市| 喜德县| 都兰县| 繁峙县| 山东省| 广州市| 江源县| 赤城县| 佳木斯市| 绩溪县| 特克斯县| 峡江县| 汨罗市|