使用vue.js v-for綁定若干個選項,需要對選項進行排序上下移動操作。
需要對options裏面數組的位置進行交換,通常是這樣來寫:
假設向前移動一個:
var index = this.options.indexOf(option); //獲取當前選項對象在數組裏面的索引。
var tempOption = this.options[index-1]; //存儲前一個
this.options[index-1] = option;(this.options[index])
this.options[index] = tempOption;
這樣的確改變了數組的順序,但是視圖卻沒有更新移動。詳見vue官網數組的描述.
解決辦法之一是改變他的對象,使用vue的set方法:
var index = options.indexOf(option);
var tempOption = options[index - 1];
Vue.set(options, index - 1, options[index]);
Vue.set(options, index, tempOption);