我是ember js的新手,我正在尝试使用ember js交换元素,但它不起作用。这是我的代码。
function swap(arr) {
let tmp = arr[evt.oldIndex];
arr[evt.newIndex] = arr[evt.newIndex];
arr[evt.oldIndex] = tmp;
}
我已经研究过ember数组了,我似乎找不到好的交换逻辑。当我试图破解时,似乎没有替换等等。我用Google搜索但未能找到任何答案。
答案 0 :(得分:3)
有一个由Ember Array实现的替换方法,其规范在此定义:http://emberjs.com/api/classes/Ember.NativeArray.html#method_replace
所以说你有一个包含4个项目的数组,并且你想在索引0和3处交换2个项目,你可以做类似于你现在的代码,但是使用replace,你可能会这样做: / p>
const myArray = Ember.A([1, 2, 3, 4]);
const first = myArray[0];
const last = myArray[3];
myArray.replace(0, 1, last).replace(3, 1, first);
// mutates myArray and returns [4, 2, 3, 1]
如果您愿意,可以使用它在您自己的mixin中定义自己的交换方法。像
这样的东西swapItems(arrayToSwap, firstIndex, lastIndex) {
const firstItem = arrayToSwap[firstIndex];
const lastItem = arrayToSwap[lastIndex];
arrayToSwap.replace(0, 1, lastItem).replace(3, 1, firstItem);
return arrayToSwap;
}
答案 1 :(得分:0)
let temp = items.objectAt(evt.oldIndex);
items.replace(evt.oldIndex, 1, [items.objectAt(evt.newIndex)]);
items.insertAt(evt.newIndex, temp);
此方法适用于交换。