继之前关于如何更新数组顺序的帖子之后。我遵循了 Michael Best 的建议,并使用 splice() 在按钮单击时修改了我的数组的顺序
self.moveup = function (itemIndex) {
var i = self.itemList.indexOf(itemIndex);
if(i >= 1){
var array = self.itemList();
self.itemList.splice(i-1, 2, array[i], array[i-1]);
}
我遇到麻烦的地方是增加数组中的项目。从阅读 Array Splice 的用法第一个参数指示向上移动应该发生的变化我认为会是i+1
,值 2 表示数组中有多少项会改变,所以那里没有变化,然后我认为的范围是当我增加位置时,所选项目数组 [i] 和结尾将是 [i+1]。
self.itemList.splice(i+1, 2, array[i], array[i+1]);
在附加的提琴手中,您可以看到值增加,但项目实际上并未更改顺序,它们仅在您按下向下按钮时才会复制。我希望结果与调用 moveUp 时的结果相同。
我会很感激任何关于我在这里缺少的东西的指示。http://jsfiddle.net/rlcrews/SCWmk/5/
-干杯