AngularJS:添加、删除和重新排序由数组控制的项目

AngularJS: add, remove and reorder items controlled by array

我在 table 中有一个 ng-repeat。在一个较大的 table 中有几个这样的 table。每行都有用于 "add another" 的按钮(我正在使用)并上下删除当前 row/move 行(我没有)。

他们是用数组创建的,table中的每个组都有自己的数组,从一个成员开始。

  vm.choices1 = [{ id: 'choice1' }];
  vm.choices2 = [{ id: 'choice1' }];
  vm.choices3 = [{ id: 'choice1' }];

点击加号按钮传递当前数组并将一个新项目压入其中,从而添加一个中继器。

vm.addNewChoice = function(arr) {
 var newItemNo = arr.length + 1;
  arr.push({
    'id': 'choice' + newItemNo
  });
};

这很好用。当然,现在我被要求添加删除按钮和 up/down 按钮。

我明白我需要做什么:我想不知何故,当单击删除按钮时,我需要将该索引号传递给删除函数并从传递的数组中弹出该索引:

vm.deleteChoice = function(arr) {
    arr.splice(index, index+1); //??
};

但我不确定如何获取点击索引并将其传递给函数。我曾经在 jQuery 中知道如何执行此操作,但在 Angular 中不知道。如果我可以将单击项目的索引获取到我的函数中,我相信我也可以从那里找出 u/down 按钮。

基本朋克:http://plnkr.co/edit/WPdnmYbDSXC0LsbeMduM?p=preview

指令 ng-repeat 为它循环访问的每个项目创建一个范围。分配给此范围的部分数据是属性 $index,它将等于 item/object.

数组中的索引

来源:https://docs.angularjs.org/api/ng/directive/ngRepeat