溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

vue $set 給數據賦值的實例

發布時間:2020-09-22 21:46:49 來源:腳本之家 閱讀:277 作者:小楠的代碼生涯 欄目:web開發

如果在實例創建之后添加新的屬性到實例上,它不會觸發視圖更新。

業務介紹:模擬后臺數據向DOM樹上遍歷數據,再向數據里添加狀態屬性,根據狀態改變顯示圖片,默認nochecked.png,點擊時改變狀態。顯示checked.png

DOM樹

<div class="cartContent" :class="{'bg' : status == 2}" v-for="(val,key) in imgListData" :id="key">
<div class="choose">
![](../assets/img/radio-checked.png)
![](../assets/img/radio-nochecked.png)
</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方法。錯誤展示:

vue $set 給數據賦值的實例

把 val.status=false; 改為this.$set(val,'status',false)問題就解決了。

以上這篇vue $set 給數據賦值的實例就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持億速云。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女