为了账号安全,请及时绑定邮箱和手机立即绑定

关于vux的XNumber组件的@on-change方法

关于vux的XNumber组件的@on-change方法

慕莱坞森 2019-05-22 21:29:15
背景是这样的:我在做一个购物车模块,这里有一个每件商品的数量加减的功能,所以用到了vux的XNumber组件。由于数据是动态获取的,购物车里会有多件商品,XNumber的v-model监听的变量就不能在data里直接定义。下面是代码节选:html:js:data(){return{quantityModel:[],}},methods:{mod_num(cart_id,index){this.$http({})}}每一次XNumber的数据变化,我就需要请求一次后台,所以用了@on-change方法监听数据的变化。但是这里有一个问题,由于v-model监听的quantityModel[index]是动态渲染的,所以在初次渲染的时候,mod_num方法就会执行一次,甚至多次。这不是我想要的结果。我尝试过直接给XNumber绑定click事件,但是这时候传递给click事件的quantityModel[index]是变化之前的值。请问大家有其他好的解决方法吗?
查看完整描述

2 回答

?
弑天下

TA贡献1818条经验 获得超8个赞

经楼上@toBeTheLight兄的提醒,这样修改就可解决问题:
data:{
modle=[],
modelState=[]
},
methods:{
xx(index){
if(!modelState[i]){
this.modelState[i]=true
return
}else{
ajax()
}
}
}
这里有两个需要注意的地方
数组modelstate应该在data里定义而不是直接用let在开头定义。用let在开头定义的话,跳到其他路由再跳回来,ajax()就会重新执行多次;
在上面的if语句里面应该有:modelState[i]=true,否则else里面ajax一直不会执行
                            
查看完整回答
反对 回复 2019-05-22
?
临摹微笑

TA贡献1982条经验 获得超2个赞

想了想,用watch也不太合适,这么写吧。
letmodelState=[]
data:{
modle=[]
},
methods:{
xx(index){
if(!modelState[i]){
return
}else{
modelState[i]=true
ajax()
}
}
}
                            
查看完整回答
反对 回复 2019-05-22
  • 2 回答
  • 0 关注
  • 737 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号