vue數(shù)據(jù)push后不能響應(yīng)式更新的問題
vue數(shù)據(jù)push后不能響應(yīng)式更新
未新屬性先開辟空間
if (res.data.length > 0) { // var goodesMap = new Map() var temp_goodsList = [] var trandeProductList = res.data navItem.orderList.push({ goodsList: [] }) for (var i = 0; i < navItem.orderList.length; i++) { for (var j = 0; j < trandeProductList.length; j++) { if (navItem.orderList[i].tradeNo == trandeProductList[j].trandeForm .tradeNo) { temp_goodsList.push(trandeProductList[j]) } } navItem.orderList[i]["goodsList"] = temp_goodsList // Object.assign(navItem.orderList[i], goodesMap.get("goodsList")); // navItem.orderList[i].push(goodsList) temp_goodsList = [] // goodesMap.clear() } // var s = that.navList[0].orderList[0].goodsList.length // for (var i = 0; i < navItem.orderList.length; i++) // { // for (var j = 0; j < navItem.orderList[i].goodsList.length; j++) { // console.log(navItem.orderList[i].goodsList[j].product.name) // } // } }
vue如何更新響應(yīng)式數(shù)組與對象的內(nèi)容
data: { // 1.基礎(chǔ)數(shù)據(jù)類型,字符串 :this.xxx 直接修改數(shù)據(jù) title:"vue", // 2.數(shù)組類型 :使用7個變異函數(shù)修改 ingredients: ['meat', 'fruit', 'cookies'], // 2-2:數(shù)組內(nèi)容為對象 // ①:如果是更改對象里的某一元素則 this.persons[1].xxx // ②:如果是修改整個對象內(nèi)容 也是使用7個變異函數(shù)修改 persons: [ { name: 'Vane', age: 38, color: 'red' }, { name: 'Fang', age: 27, color: 'blue' }, ], // 3.對象類型 // ①:如果修改原有響應(yīng)式數(shù)據(jù),則 userInfo.xxx修改 // ②:如果是新增響應(yīng)式數(shù)據(jù),則 this.$set(this.userInfo,'xxx','x') userInfo:{ name:"wangwu", age:19 } },
1-更新基礎(chǔ)數(shù)據(jù)類型(字符串)
this.title="vue2" 直接修改數(shù)據(jù)
2-更新數(shù)組類型
不可以使用this.xxx直接修改數(shù)據(jù)
使用7個變異函數(shù)修改 pop,push,shift,unshift,splice,sort,reverse,它們是已經(jīng)在vue當中進行了二次改造
this.ingredients[1]="soup" // 失敗 this.ingredients.splice(1,1,"soup") // 成功
2-2:數(shù)組內(nèi)容為對象
1.修改對象中的某一屬性:
this.persons[1].name="lisi"
2.用變異函數(shù)整體修改:
this.persons.splice(1,1,{name: 'zhangsan', age: 20, color: 'green'})
3.直接進行數(shù)組元素的整體替換,是不行的
this.persons[1]={ name: 'zhangsan', age: 20, color: 'green' }
3-對象類型
1.如果修改原有響應(yīng)式數(shù)據(jù),則 userInfo.xxx修改
2.如果是新增響應(yīng)式數(shù)據(jù),則 this.$set(this.userInfo,'xxx','x')。
this.$set:第一個參數(shù)就是目標對象,第二個參數(shù)是對象的屬性,第三個參數(shù)是對象的屬性值
注意:
- this.userInfo.sex="男" 使用this.xxx直接增加的數(shù)據(jù),不是響應(yīng)式數(shù)據(jù),不會出現(xiàn)在vue調(diào)試工具里。
- 他僅僅是普通的屬性節(jié)點,并不是響應(yīng)式的屬性節(jié)點
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
vue-cli3 配置開發(fā)與測試環(huán)境詳解
這篇文章主要介紹了vue-cli3 配置開發(fā)與測試環(huán)境詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-05-05Vue中登錄驗證成功后保存token,并每次請求攜帶并驗證token操作
這篇文章主要介紹了Vue中登錄驗證成功后保存token,并每次請求攜帶并驗證token操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-09-09Vue綁定class和綁定內(nèi)聯(lián)樣式的實現(xiàn)方法
本文主要介紹了Vue綁定class和綁定內(nèi)聯(lián)樣式的實現(xiàn)方法,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-11-11