【问题标题】:AngularJS: add, remove and reorder items controlled by arrayAngularJS:添加、删除和重新排序由数组控制的项目
【发布时间】:2015-05-05 20:54:06
【问题描述】:

我在表格中有一个 ng-repeat。在一个较大的表内有几个这样的表。每行都有用于“添加另一个”的按钮(我正在使用)和删除当前行/上下移动行(我没有)。

它们是用数组创建的,表中的每个组都有自己的数组,以一个成员开始。

  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
  });
};

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

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

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

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

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

【问题讨论】:

    标签: javascript jquery arrays angularjs angularjs-ng-repeat


    【解决方案1】:

    指令ng-repeat 为其迭代的每个项目创建一个范围。分配给此范围的部分数据是属性$index,它将等于项目/对象数组中的索引。

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

    【讨论】:

    • $索引!我忘记了。这似乎工作 ng-click="carrier.deleteChoice(carrier.choices1,this.$index)" 发送到控制器中的 vm.deleteChoice = function(arr, index) { arr.splice(index, index); }
    • 其实,这是个好主意,帮助我完成了下一个问题!我想我需要复习一下splice
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-29
    相关资源
    最近更新 更多