vue給對象添加新屬性,視圖不會更新的問題


若現在我們有一個新的對象數組:
`

 var peoples = [{name:'小明',age:1,sex:'男'},{name:'小紅',age:2,sex:'女'},{name:'小綠',age:3,sex:'男'},{name:'小黃',age:4,sex:'女'}]

`
我們給每一個對象添加一個屬性:

`

  var vm = this;
  for(var i=0;i<peoples.length;i++){
        vm.peoples[i].operation="全部展開";
  }

`
那么每一個對象中就會多一個屬性:

`

  {name:'小明',age:1,sex:'男',operation:'全部展開'}......

`
但是我們要是對對象進行操作的話,如:

`

  <div v-for="(item,index) in peoples">
        <div v-if="item.operation=='全部展開'" @click="changgeO(item.operation,index)">{{item}}<div>
        <div v-else-if="item.operation=='全部關閉'"></div>
  </div>
  
  methods:{
        changgeO:function(text,index){
              if(text=="全部展開"){
                    peoples[index].operation="全部關閉";
              }
        }
  
  }

`
雖然上述代碼表面上看起來沒有什么錯誤,但是,執行起來的話,視圖並不會更新,也就是說

{{item}}中的值依然是:{name:'小明',age:1,sex:'男',operation:'全部展開'}而不是我們期望的{name:'小明',age:1,sex:'男',operation:'全部關閉'}

所以,我們要用vue的方式給對象賦值:
`

  var vm = this;

  for(var i=0;i<peoples.length;i++){
        vm.$set(peoples[i],'operation','全部展開');
   }

`
這樣我們再進行對其中的對象進行操作的話,視圖也會隨之而改變:


免責聲明!

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



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