微信小程序----修改data中的数据,页面数据不改变

WXRUI体验二维码

WXRUI体验码

如果文章对你有帮助的话,请打开微信扫一下二维码,点击一下广告,支持一下作者!谢谢!

错误原因

由于VUE等框架,我们在逻辑层修改data中的数据后,视图层(页面渲染)会跟着发生变化。当然微信小程序也是实现了相同的功能,那么出现错误的原因是什么?答案:微信小程序的setData()方法。

常见赋值方式(习惯)导致的错误

Page({
  data: {
    isShow: false
  },
  changeStatus(){
    console.log(this.data.isShow);
    this.data.isShow = true;
    console.log(this.data.isShow);
  }
})
效果图

这里写图片描述

从上边代码和效果图我们可以看出:1、习惯的赋值方式“=”在逻辑层是起到了作用改变了isShow;2、视图层的并没有发生变化。
结论就是常规的“=”赋值方式,在微信小程序中只能改变data中的数据,而不能改变视图层的数据,那么微信小程序怎么解决这个问题的,setData()方法。

Page.prototype.setData()

setData 函数用于将数据从逻辑层发送到视图层(异步),同时改变对应的 this.data 的值(同步)。

setData函数做了哪些事情?
  1. 将数据从逻辑层发送到视图层----这个刚好解决我们这里出现的错误,视图层数据的改变
  2. 改变对应的 this.data 的值----同时在逻辑层将data中的值改变
Page({
  data: {
    isShow: false,
    isShow1: false
  },
  changeStatus(){
    console.log(this.data.isShow);
    this.data.isShow = true;
    console.log(this.data.isShow);
  },
  changeStatus1() {
    console.log(this.data.isShow);
    this.setData({ isShow:true});
    console.log(this.data.isShow);
  }
})
效果图

这里写图片描述

总结:

  1. 在开发程序的时候,我们要遵循别人的规则来开发,不要被习惯所左右;
  2. 熟悉开发文档,减少这种习惯错误(不易被发现);
  3. 微信小程序开发中,为了减少data和视图层数据表现不一致,全部采用setData方法修改值。

setData函数注意事项

  1. 直接修改 this.data 而不调用 this.setData 是无法改变页面的状态的,还会造成数据不一致。
  2. 单次设置的数据不能超过1024kB,请尽量避免一次设置过多的数据。
  3. 请不要把 data 中任何一项的 value 设为 undefined ,否则这一项将不被设置并可能遗留一些潜在问题。

WXRUI体验二维码

WXRUI体验码

如果文章对你有帮助的话,请打开微信扫一下二维码,点击一下广告,支持一下作者!谢谢!

其他

我的博客,欢迎交流!

我的CSDN博客,欢迎交流!

微信小程序专栏

前端笔记专栏

微信小程序实现部分高德地图功能的DEMO下载

微信小程序实现MUI的部分效果的DEMO下载

微信小程序实现MUI的GIT项目地址

微信小程序实例列表

前端笔记列表

游戏列表

  • 19
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 10
    评论
### 回答1: 微信小程序的checkbox-group可以用来实现购物车功能。购物车通常会展示用户已选择的商品,并且允许用户对选择的商品进行编辑、删除等操作。 首先,我们可以使用checkbox-group组件来展示用户可选的商品列表。每个商品可以用一个checkbox和相应的label展示。用户可以通过勾选checkbox来选择要购买的商品。 在选择完商品后,我们可以通过checkbox-group的bindchange事件来监听用户的选择变化。在该事件的处理函数,我们可以获取到用户选择的商品的信息。可以将这些信息保存在一个数组,用于在购物车展示已选择的商品。 接下来,我们可以使用一个列表展示购物车的商品。在列表,我们可以展示商品的图片、名称、价格等信息。同时,我们还可以在每个商品后面添加一个删除按钮,供用户删除不再需要的商品。 当用户点击删除按钮时,我们可以根据商品的索引或唯一标识从购物车移除该商品,并更新购物车的展示。 除了展示已选择的商品和删除商品,我们还可以在购物车展示商品的数量,并提供加减按钮供用户调整商品的数量。用户可以点击加减按钮来增加或减少商品的数量。同时,我们还可以根据商品的数量和价格计算出该商品的小计,并在购物车展示。 最后,我们可以在购物车底部添加一个结算按钮,供用户点击进入结算页面。用户可以在结算页面确认购买的商品和总金额,并填写收货地址等信息。 总之,通过微信小程序的checkbox-group组件,我们可以很方便地实现购物车功能,让用户可以方便地选择和管理购买的商品。 ### 回答2: 微信小程序的checkbox-group组件可以用于实现购物车的功能。首先,在页面的wxml文件,可以使用checkbox-group组件来创建一个购物车列表,每个商品项都有一个对应的checkbox。 例如: ``` <checkbox-group bindchange="checkboxChange"> <block wx:for="{{cartList}}"> <checkbox value="{{item.id}}"></checkbox> <view>{{item.name}}</view> <view>{{item.price}}</view> </block> </checkbox-group> ``` 在js文件,需要定义一个cartList数组来存储购物车的商品信息,并添加相应的事件处理函数checkboxChange来实现选和取消选商品的操作。 例如: ``` Page({ data: { cartList: [ { id: 1, name: "商品1", price: 10 }, { id: 2, name: "商品2", price: 20 }, // 其他商品项 ] }, checkboxChange(e) { console.log('checkbox发生change事件,携带value值为:', e.detail.value) // 可以在这里根据checkbox的选状态来更新购物车商品的选状态 } }) ``` 在checkboxChange函数,可以获取到checkbox选的商品的value值,可以通过遍历cartList数组来找到对应的商品项,并更新选状态。 最后,可以根据需求在购物车添加结算按钮,点击结算按钮可以获取到购物车的商品的信息,进行下一步的操作。 ### 回答3: 微信小程序的checkbox-group组件可以用于实现购物车的功能。购物车一般用于将用户选择的商品添加到购物车,方便用户统一管理和结算。 首先,在小程序创建一个页面页面上包含一个checkbox-group组件和一个结算按钮。checkbox-group组件用于展示用户可以选择的商品列表,每个商品都有对应的checkbox。用户可以通过勾选checkbox的方式选择要购买的商品,勾选的商品会被添加到购物车。 接下来,通过小程序框架提供的数据绑定机制,将商品的勾选状态与数据关联起来。可以使用一个数组来保存用户选择的商品信息,数组的每个元素包含商品的相关信息和一个表示勾选状态的标志位。当用户勾选或取消勾选某个商品的时候,可以通过改变数组相应元素的标志位来表示选的状态。 在结算按钮的点击事件,遍历数组,筛选出被勾选的商品,然后可以进行相关的结算操作,如计算总价、生成订单等。 在购物车页面,可以展示被勾选的商品列表,以供用户查看和管理。用户可以通过点击checkbox来修改商品的勾选状态,然后可以进行批量删除、修改数量等操作。 最后,在小程序加入其他必要的功能,如商品的增加、删除、数量修改等,以供用户更好地管理购物车。 总之,通过使用微信小程序的checkbox-group组件,我们可以轻松实现购物车功能,方便用户管理和结算商品。
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Rattenking

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值