移动fromIndex,toIndex时的angular splice重写元素

时间:2015-05-11 11:14:54

标签: javascript angularjs splice

我有一个暴露于$scope的数组,名为exercise,其中包含一系列练习,这些练习就是这样的对象:

[
   {
     "exerciseName": "Half Lunge ",
     "exerciseDescription": "Stand with one foot forward taking most of your weight.",
     "images": [71,73]
   }
] 

我的目标是使用以下方法将练习从一个位置移动到另一个位置:

$scope.moveItem = function(exercise, fromIndex, toIndex) {
 $scope.exercises.splice(fromIndex, 1);
 $scope.exercises.splice(toIndex, 0, exercise);
};

然而,这会使用toIndex

中的数据覆盖fromIndex中的练习

Codepen

2 个答案:

答案 0 :(得分:1)

你在函数中传递了一个额外的参数。 只需从元素中删除该练习参数。

<ion-reorder-button class="ion-navicon" on-reorder="moveItem(exercise, $fromIndex, $toIndex)"></ion-reorder-button>

已编辑codepen

答案 1 :(得分:0)

您正在移除fromIndex位置的元素。 然后,您将在index toIndex。

添加元素练习

这完全取决于您提供的指数。如果fromIndex是你的运动对象的索引而toIndex是你想要它移动的地方,那么它应该可以工作。

如果你只有一个to和from索引而不是一个运动对象作为函数参数,那就更清楚了。那你就冷了:

$scope.moveItem = function(fromIndex, toIndex) {
    var exercise = $scope.exercises[fromIndex];
    $scope.exercises.splice(fromIndex, 1);
    $scope.exercises.splice(toIndex, 0, exercise);
};