2017-01-25 2 views
1

В моем vue.js приложении я пытаюсь поменять 2 строки форума, как это:Vue.js элементы массива подкачки

export default { 
     data() { 
      return { 
       forums: [] 
      } 
     }, 

     methods: { 
      increment(forum, index) { 
       ForumService.increment(forum) 
        .then(() => { 
         let b = this.forums[index]; 
         this.forums[index] = this.forums[index++]; 
         this.forums[index++] = b; 
        }); 
      } 
     } 
    } 

Но ничего не происходит? Что я здесь делаю неправильно?

ответ

4

В то время как @dfsq является правильным относительно использования index++ Vue не распознает нативные мутации массивов из-за неспособности их соблюдать. вы должны использовать мутационный метод для их изменения.

попробовать это:

.then(() => { 
    let rows = [this.forums[index], this.forums[index + 1]]; 
    this.forums.splice(index, 2, rows[1], rows[0]); 
}); 

Я не проверял это, и я буду править, когда я могу.

+0

Это правильно о сращивании. Однако 'this.forums.splice (index, 2, this.forums [index + 1], this.forums [index]);' достаточно. – dfsq

+0

@dfsq true, только личное предпочтение для сохранения значений. –

+0

Нет, я имею в виду, что ваш код не будет работать с массивом в качестве третьего аргумента. Должно быть 'this.forums.splice (index, 2, rows [1], rows [0]);' – dfsq

Смежные вопросы