问题描述:
小程序中我们可能使用了wx:for关键字去循环出来了一个列表,这个列表里的值不可能是一成不变的,例如我写的下图的优惠券效果,我的优惠券“33”就是动态显示的,如果我选择了99元的优惠券,则应该显示99,那么动态设置99的价格呢?
小程序中有如下的解决方案:
使用:setData{['paymentObj.totalPrice'] : xxx}
或者使用 :
let couponDiscountTxt = `paymentObj.productList[${_this.data.currentCourseIndex}].courseList[0].couponDiscountTxt`
setData{ [couponDiscountTxt]: `- ¥${couponItem.currentTarget.dataset.coupontext}`}
总的来讲就是用 [] 包一个对象字符串 or 数组字符串,即可使用setData去赋值了
/* 定义优惠券更改之前的价格描述 */ let beforeCouponDiscountTxt = _this.data.paymentObj.productList[_this.data.currentCourseIndex].courseList[0].couponDiscountTxt /* 定义优惠券价格描述 */ let couponDiscountTxt = `paymentObj.productList[${_this.data.currentCourseIndex}].courseList[0].couponDiscountTxt` /* 定义小计价格 */ let subtotalTxt= `paymentObj.productList[${_this.data.currentCourseIndex}].price` /* 定义优惠券差价 = 原优惠券价格 - 现优惠券价格*/ let priceDifferences = beforeCouponDiscountTxt.replace(/[^0-9]/ig,"") - couponItem.currentTarget.dataset.coupontext.replace(/[^0-9]/ig,"") _this.setData({ // 将当前的优惠券id设置、优惠券、价格小计、价格总计 currentCouponID: couponItem.currentTarget.dataset.couponid, [couponDiscountTxt]: `- ¥${couponItem.currentTarget.dataset.coupontext}`, [subtotalTxt]: (()=> { // 小计价格 = 原小计价格 + (原优惠券价格 - 现优惠券价格) let subtotal = _this.data.paymentObj.productList[_this.data.currentCourseIndex].price / 100 + priceDifferences return subtotal * 100 })(), ['paymentObj.totalPrice']: (() => { //总计价格 = 原总计价格 + (原优惠券价格 - 现优惠券价格) let totalPrice = _this.data.paymentObj.totalPrice / 100 + priceDifferences return totalPrice * 100 })() })