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

Vue中动态添加Class

Vue中动态添加Class

慕田峪4524236 2019-05-09 09:00:43
在项目中有个v-for循环出来的列表,循环对象在computed周期里现在想对这个列表添加点击事件,点击时添加一个class,但是并没有立即成功(更新dom?),要在别的地方触发别的事件(如果有的话)才有反应。下面附上代码:html:{{item.text}}js:exportdefault{name:'App2',data(){return{//由于一些需求,arr不能写在这}},methods:{isActive:function(item,status){console.log(item.checked)if(typeofitem.checked=='undefined'){this.$set(item,'checked',true);}else{item.checked=!item.checked;}console.log(item.checked)},},computed:{arr:function(){return[{text:"A"},{text:"B"},{text:"C"},{text:"D"}]},}}css:.col-5{float:left;width:25%;color:#fff;}.col-5p{background:#000;line-height:50px;text-align:center;}.col-5p.selectActive{background:#f00;}请大佬们指教一下……
查看完整描述

2 回答

?
慕虎7371278

TA贡献1802条经验 获得超4个赞

你直接调用this.$set(item,'checked',true);无法触发视图更新,因为你computed中的arr依赖的值不是data中的数据,可以手动触发视图更新。
isActive:function(item,status){
console.log(item.checked)
if(item.checked==undefined){
item.checked=true
}else{
item.checked=!item.checked
}
this.$forceUpdate()
console.log(item.checked)
},
建议你arr还是写在data中。
                            
查看完整回答
反对 回复 2019-05-09
?
ITMISS

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

在data里面设置字段,这样应该可以触发事件:
data(){
return{
arr:[
{text:"A",checked:false},
{text:"B",checked:false},
{text:"C",checked:false},
{text:"D",checked:false}
]
}
},
                            
查看完整回答
反对 回复 2019-05-09
  • 2 回答
  • 0 关注
  • 1801 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

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

帮助反馈 APP下载

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

公众号

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