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

vue已经循环出来的数据,通过方法点击事件改变了数据,但页面数据没有更新

vue已经循环出来的数据,通过方法点击事件改变了数据,但页面数据没有更新

人到中年有点甜 2019-03-14 18:15:31
 <div class="condition" :style="{background: item.collectColor}" v-for="(item,index) in myCollectList" :key="item.id"             @click="selectMyCollectList(item,index)">          <span>{{item.collectTitleName}}</span><i class="el-icon-check"  v-show="item.selected"></i>        </div>                方法        selectMyCollectList(item,index) {        item.selected = !item.selected;        }                         
查看完整描述

6 回答

?
慕哥6287543

TA贡献1831条经验 获得超10个赞

先设置为 响应式数据


for (let i = 0; i < _this.myCollectList.length; i++) {

              _this.$set(_this.myCollectList[i], 'selected', false)

            }

        

此时可以改变数据,视图就会改变


 selectMyCollectList(item,index) {

    item.selected = !item.selected;

    }

    


通过this.$set 设置为响应式数据,数据改变后,视图就会变化


查看完整回答
反对 回复 2019-03-25
?
德玛西亚99

TA贡献1770条经验 获得超3个赞

this.$set(item, 'selected', !item.selected)


查看完整回答
反对 回复 2019-03-25
?
潇潇雨雨

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

:key="index"

key是绑定你循环的数组里面的index的


查看完整回答
反对 回复 2019-03-25
?
森林海

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

 selectMyCollectList(item,index) {

        item.selected = !item.selected;

        }

这个方法是没有问题的,可以这么试试打印到页面看看数据变化,应该是其他地方有问题。


<span>{{item.selected}}</span><i class="el-icon-check" v-show="item.selected"></i>


查看完整回答
反对 回复 2019-03-25
?
手掌心

TA贡献1942条经验 获得超3个赞

点击改变数据,得改变data里面的数据,这个方法改下:


selectMyCollectList(item,index) {

    this.myCollectList[index]['selected']=!this.myCollectList[index]['selected'];

}


查看完整回答
反对 回复 2019-03-25
?
泛舟湖上清波郎朗

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

题主用的是老版本的vue吗?我最近面试的时候也碰到这个问题了,但是我的页面数据是实时更新的,用题主的代码在我项目里面跑也没出现页面不更新的问题不知道为什么。

查看完整回答
反对 回复 2019-03-25
  • 6 回答
  • 0 关注
  • 4127 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

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

帮助反馈 APP下载

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

公众号

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