點擊多選框,el-checkbox綁定的值變化了,但是頁面沒有反應


今天做項目遇到點擊element的多選框,通過change事件發現v-model的值變化了,但是頁面上沒有勾選上

<el-checkbox v-model="mData.isCheck" @change="changeCheck($event,mData)"></el-checkbox>

原因:手動添加數據的問題,我將后端返回的數組手動將數組中的每個對象都添加一個key:value鍵值對的值,然后通過這個值去控制多選框的選中

一開始我是這樣做的

var result = data.list.map(function(item) {
            item.isCheck = false
            return item
          })
 this.mListDatas.list = result

上面的做法點擊多選框,isCheck的值變化了,但是頁面上沒有反應,原因是我們是手動添加的isCheck字段,這樣添加的字段數據不是響應式的,沒有get set屬性,所以需要用vue的set方法添加對象屬性,

下面是正確的做法:

that.mListDatas = data;   // 從后台返回的數據沒有isCheck這個字段
           var result = data.list.map(function(item) {
            that.$set(item,'isCheck',false)
            return item
          })

that.mListDatas = result   // 這樣數組中的每一個對象都有isCheck這個字段

 另一種做法給數組中的對象添加一個鍵值對,這種方法時直接返回一個新的數組

let array = []
      data.list.map(function(item) {
            array.push(
              Object.assign({},item,{isSelectList:[]})
            )
          })

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM