AngularJS:从范围删除而不进行杀戮

时间:2013-04-25 11:08:12

标签: angularjs

我有一个项目数组绑定到<li>的{​​{1}}元素与AngularJS。我希望能够点击每个旁边的“删除项目”并删除该项目。

StackOverflow上的

This answer允许我们这样做,但因为要删除元素的数组的名称是硬编码的,所以它不能在列表中使用。

您可以在JSfiddle set up上看到一个示例,如果您尝试点击游戏旁边的“删除”,那么学生将被移除,而不是游戏。

从按钮返回<ul>使我可以访问Angular $ scope,但我不知道如何从父数组中干净地删除该项。

我可以使用this定义按钮,并使函数看起来像这样:

ng-click="remove('games',this)"

Like this JSFiddle)但在我内部命名父数组似乎是在一年内编辑代码时破坏功能的一种非常好的方法。

有什么想法吗?

1 个答案:

答案 0 :(得分: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?由于您已经位于数组所在的范围内,因此从那时起它应该非常简单。