javascript - 如何在 Angularjs 应用程序中删除数组中的元素

标签 javascript arrays angularjs

我正在尝试执行一项基本任务:从数组中删除一个项目。
数组看起来像这样:

myWordsInJSON = [{"eng":"frau","rus":"жена"},{"eng":"mann","rus":"муж"},{"eng":"witwe","rus":"вдова"},{"eng":"witwer","rus":"вдовец"},{"eng":"schwiegervater","rus":"свекор"}]

这是我的 html 代码:

<tr ng-repeat="item in myWordsInJSON">
          <td>{{$index + 1}}</td>
          <td>{{item[Params.lang1]}}</td>
          <td>{{item[Params.lang2]}}</td>
          <td><span class="label label-danger"
                         ng-click="cut({{$index}})">x</span>
          </td>
        </tr>

Output screenshot

看起来很棒。当我按下“删除”标签时,我的 Controller 的剪切功能开始:

 $scope.cut = function(index){
  $scope.myWordsInJSON.splice(index,1);
  if ($scope.myWordsInJSON.length == 1)
    $scope.myWordsInJSON = [];
  console.log('cuted, index =', index,$scope.myWordsInJSON);
};

但是奇怪的事情发生了。 从数组开头剪切一些项目后,我得到了这张图片:

everythig looks ok

DOM 看起来很棒,我数组的最后一个元素是:

<tr ng-repeat="item in myWordsInJSON" class="ng-scope">
          <td class="ng-pristine ng-untouched ng-valid ng-binding">2</td>
          <td class="ng-binding">schwiegervater</td>
          <td class="ng-binding">свекор</td>
          <td><span class="label label-danger" ng-click="cut(1)">x</span>
          </td>
        </tr>
但是!!!当我按下这个元素时,它必须调用我的剪切函数,如 cut(1),什么也没有发生,在我的控制台中我看到

index = 4

这意味着我的函数正在获取 index=4 而不是 index=1

所以,看起来我的初始页面编译索引仍然在这里...... 我该如何解决这个问题?

更新!

通过使用“$index”而不是“{{$index}}”解决了该问题。沉入 valverde93 。但我仍然不明白为什么会发生这种情况)))也许有人可以解释一下?

最佳答案

我在当前的项目中遇到了同样的问题。问题在于重复元素的索引和该数组中对象的实际索引不同。

为了解决这个问题,我必须像这样传递对象的ID
ng-click="deleteForId(repeatedElement.id)
然后,在 deleteForId 函数中,我在数组中搜索该对象并获取其索引。只有那时我才打电话
$scope.myObj.splice(index, 1);

关于javascript - 如何在 Angularjs 应用程序中删除数组中的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29965154/

相关文章:

javascript - 如何在横幅上添加和对齐按钮?

javascript - 在 WebSocket 上发送填充数据

javascript - Java Nashorn 相当于在 Javascript 中将对象推送到数组

javascript - Jquery添加重复的数组键

arrays - 可见的弃用警告...?

javascript - AngularJS:指令中的 element.show() 不起作用

javascript - 悬停以左右移动 slider

javascript - UL 标签(来自 wysihtml5 javascript)不水平对齐

angularjs - Angular $timeout - TypeError : object is not a function

javascript - Angular UI 路由器 - 解析后无法在组件中获取我的数据