2016-11-25 76 views
0

Vue.js犯規檢測我交換在我的數據對象2個數組元素:重新渲染DOM如果數據元素的索引改變

data: { 
    list: [ 
    'Foo', 
    'Bar', 
    'Test' 
    ] 
} 

方法來交換條目:

swapIndex: function(from, to) { 

    var first = this.list[from]; 
    this.list[from] = this.list[to]; 
    this.list[to] = first; 

} 

的jsfiddlehttps://jsfiddle.net/aaroniker/r11hxce8/

我想重新渲染v-for循環,如果我交換索引。

謝謝!

+0

您必須使用突變方法才能使這些數組更改處於被動狀態。檢查[數組更改檢測文檔](https://vuejs.org/v2/guide/list.html#Array-Change-Detection)。 –

回答

2

這裏是我帶來的解決方案。我創建了列表的副本,以修改它,我調用this.$set()方法就行了:

new Vue({ 
    el: '#app', 
    data: { 
     list: [ 
      'Foo', 
      'Bar', 
      'Test' 
     ] 
    }, 
    methods: { 
     swapIndex: function(from, to) { 
      var copy = JSON.parse(JSON.stringify(this.list)) 
      var first = copy[from]; 
      copy[from] = copy[to]; 
      copy[to] = first; 
      this.$set(this,'list',copy) 
      console.log(this.list); 

     } 
    } 
}) 
+0

謝謝!工作:) – Aaroniker