如果在實例創建之后添加新的屬性到實例上,它不會觸發視圖更新。
業務介紹:模擬后臺數據向DOM樹上遍歷數據,再向數據里添加狀態屬性,根據狀態改變顯示圖片,默認nochecked.png,點擊時改變狀態。顯示checked.png
DOM樹
<div class="cartContent" :class="{'bg' : status == 2}" v-for="(val,key) in imgListData" :id="key"> <div class="choose">   </div> ......... </div>
模擬數據
data(){ return{ responseData:[ {'id':'1','name':'女裝','price':115,'num':1,'pic':'../static/img/1.jpg'}, {'id':'2','name':'男裝','price':110,'num':1,'pic':'../static/img/2.jpg'}, {'id':'3','name':'童裝','price':118,'num':2,'pic':'../static/img/3.jpg'} ], imgListData:[] } },
向原數據添加新屬性status
created() { this.allDataList() }, methods:{ allDataList(){ for(let val of this.responseData){ // val.status=false;//寫這個有問題 this.$set(val,'status',false)//此處為重點 this.imgListData.push(val) } console.log(this.imgListData) }
點擊事件(根據索引改變當前屬性的狀態)
choose(index){ if(this.imgListData[index].status){ this.imgListData[index].status=false; }else{ this.imgListData[index].status=true } },
輸出發現有status屬性,狀態也由false改為了true,但是就是樣式要刷新一下才能顯示。把里面的屬性仔細看一遍原來status沒有get/set方法。錯誤展示:
把 val.status=false; 改為this.$set(val,'status',false)問題就解決了。
以上這篇vue $set 給數據賦值的實例就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持億速云。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。