关于微信小程序中的数据双向绑定如何实现

这篇具有很好参考价值的文章主要介绍了关于微信小程序中的数据双向绑定如何实现。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

官方文档:微信小程序双向绑定语法
在 WXML 中,普通的属性的绑定是单向的。例如:

<input value="{{value}}" />

如果使用 this.setData({ value: ‘leaf’ }) 来更新 value ,this.data.value 和输入框的中显示的值都会被更新为 leaf ;但如果用户修改了输入框里的值,却不会同时改变 this.data.value 。

如果需要在用户输入的同时改变 this.data.value ,需要借助简易双向绑定机制。此时,可以在对应项目之前加入 model: 前缀:

<input model:value="{{value}}" />

这样,如果输入框的值被改变了, this.data.value 也会同时改变。同时, WXML 中所有绑定了 value 的位置也会被一同更新, 数据监听器 也会被正常触发。

一、通过 input 的 bindinput 事件实现

这里建议吧 bindinput 换成 bindblur 在输入框失去光标时再去赋值。
官方解释:setData 都会触发逻辑层虚拟 DOM 树的遍历和更新,也可能会导致触发一次完整的页面渲染流程。
合理使用 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="请输入昵称" />
      </view>
    </view>
    <view class="form-item">
      <view class="form-label">简介</view>
      <view class="form-input">
        <input type="text" value="{{ form.introduce }}" data-prop="form.introduce" bindinput="BindInput" placeholder="请输入简介" />
      </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
    })
  }
})

输出结果
关于微信小程序中的数据双向绑定如何实现

二、通过 model:value 实现

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="请输入昵称" />
      </view>
    </view>
    <view class="form-item">
      <view class="form-label">简介</view>
      <view class="form-input">
        <input name="introduce" type="text" model:value="{{ form.introduce }}" placeholder="请输入简介" />
      </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);
  },
})

输出结果
关于微信小程序中的数据双向绑定如何实现
WXSS 代码文章来源地址https://www.toymoban.com/news/detail-449669.html

.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;
}

到了这里,关于关于微信小程序中的数据双向绑定如何实现的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 微信小程序学习实录1(wxml文档、引入weui、双向数据绑定、提交表单到后端)

    wx:for 在组件上使用 wx:for 控制属性绑定一个数组,即可使用数组中各项的数据重复渲染该组件。 默认数组的当前项的下标变量名默认为 index,数组当前项的变量名默认为 item 使用 wx:for-item 可以指定数组当前元素的变量名, 使用 wx:for-index 可以指定数组当前下标的变量名: 在

    2024年02月02日
    浏览(68)
  • 微信小程序实现双向绑定

    简易双向绑定 在 WXML 中,普通的属性的绑定是单向的。例如: 如果需要在用户输入的同时改变 this.data.value ,需要借助简易双向绑定机制。此时,可以在对应项目之前加入 model: 前缀: 用于双向绑定的表达式有如下限制: 只能是一个单一字段的绑定,如: 目前,尚不能 data

    2024年02月06日
    浏览(41)
  • 微信小程序复杂对象的双向绑定(附代码可直接使用)

    最近在小程序的开发过程中,遇到一个需求,需要绑定一个list到自定义表单组件,组件根据列表渲染表单,表单的值需要和父组件双向绑定。 但是这里却出现了问题,本人先使用vue的方式将list直接做整体绑定。 结果在子组件内部使用setData对list的属性做出变更时直接报错栈

    2024年02月09日
    浏览(68)
  • uniapp 微信小程序:v-model双向绑定问题(自定义 props 名无效)

    VUE中父子组件传递数据的基本套路: 父传子 props 子传父 this.$emit(\\\'事件名\\\', \\\'数据\\\'); 使用 sync 修饰符,实现 支持同步数据 因为用的是 uniapp 开发小程序,所以要考虑到兼容性问题,不要把自己当正经VUE2。 小程序虽然支持 v-model 指令,但不支持 model 选项。 所以要么子组件中声

    2024年02月15日
    浏览(45)
  • 小程序中的数据双向绑定和Vue的有什么区别

    小程序中的数据双向绑定 1.首先通过 bindinput 绑定文本框的输入事件  2.在 data 中声明一个变量 content ,将其动态绑定成文本框的 value 值 3.在 bindinput 事件中通过事件参数 e.detail.value 可以获取到文本框中最新的 value 值 4.通过 this.setData 将文本框最新的  value 值 赋值给 动态绑定

    2024年01月19日
    浏览(40)
  • 关于微信小程序中如何实现数据可视化-echarts动态渲染

    移动端设备中,难免会涉及到数据的可视化展示、数据统计等等,本篇主要讲解原生微信小程序中嵌入 echarts 并进行动态渲染,实现数据可视化功能。 基础使用 首先在 GitHub 上下载 echarts 包 地址:https://github.com/ecomfe/echarts-for-weixin/tree/master 下载项目 解压压缩包,将 ec-canva

    2024年01月25日
    浏览(81)
  • 微信小程序——数据绑定

    在微信小程序中,可以通过以下代码实现数据绑定: 在WXML中,使用双大括号{{}}绑定数据,将数据渲染到对应的视图中。 在JS中,定义一个数据对象,并将其绑定到页面的data属性上。 当数据对象发生变化时,小程序会自动更新相关的视图。 可以通过setData方法在JS中更新数据

    2024年02月07日
    浏览(37)
  • 【微信小程序】数据绑定

    ✅作者简介:CSDN内容合伙人、阿里云专家博主、51CTO专家博主🏆 📃个人主页:hacker707的csdn博客 🔥系列专栏:微信小程序🥇 💬个人格言:不断的翻越一座又一座的高山,那样的人生才是我想要的。这一马平川,一眼见底的活,我不想要,我的人生,我自己书写,余生很长,

    2024年02月09日
    浏览(41)
  • 微信小程序数据绑定和事件触发

    数据绑定和修改 微信小程序数据绑定是指将数据和视图进行关联,当数据发生变化时,视图也会相应地发生变化。微信小程序数据绑定主要有以下几种方式: 双向绑定:双向绑定是指数据和视图之间的双向关联,当数据发生变化时,视图也会相应地发生变化,反之亦然。在

    2024年02月10日
    浏览(64)
  • 微信小程序学习之数据绑定,事件绑定,事件传参与数据同步的学习记录

    数据绑定的基本原则:在data中定义数据,在wxml中使用数据 1.1. 在data中定义数据 在data中定义数据,找到页面对应的.js文件,然后把数据定义到data中即可。 pages/list/list.js 1.2. 在wxml中渲染数据 (mustache语法) mustache语法,插值表达式 将data中的数据绑定到页面中渲染,使用mu

    2024年02月13日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包