0

我有一组项目绑定到AngularJS<li>中的元素。<ul>我希望能够单击每个旁边的“删除项目”并删除该项目。

StackOverflow 上的这个答案让我们能够做到这一点,但是因为要从中删除元素的数组的名称是硬编码的,所以它不能跨列表使用。

您可以在此处看到有关JSfiddle 设置的示例,如果您尝试单击游戏旁边的“删除”,则会删除学生,而不是游戏。

从按钮传this回让我可以访问 Angular $scope,但我不知道如何从父数组中干净地删除该项目。

我可以定义按钮ng-click="remove('games',this)"并使函数看起来像这样:

$scope.remove = function (arrayName, scope) {
  scope.$parent[arrayName].splice(scope.$index,1);
}

就像这个 JSFiddle 一样)但是当我在里面命名父数组时,当我在一年内编辑我的代码时,它似乎是一种破坏功能的好方法。

有任何想法吗?

4

1 回答 1

2

我不明白你为什么要通过this..你几乎不需要处理this角度问题。(我认为这是它的优势之一!)。

这是一个以稍微不同的方式解决问题的小提琴。

http://jsfiddle.net/WJ226/5/

控制器现在简化为

function VariousThingsCtrl($scope) {

    $scope.students = students;
    $scope.games = games;

    $scope.remove = function (arrayName,$index) {
      $scope[arrayName].splice($index,1);
    }
}

与其通过整体scope,为什么不直接通过$index呢?由于您已经在数组所在的范围内,因此从那时起应该很容易。

于 2013-04-25T12:17:36.720 回答