orderBy后Angularjs错误$index

标签 angularjs sorting indexing angularjs-orderby

我是 Angular.js 的新手,在对数组进行排序和处理排序后的数据时遇到一些问题。

我有一个包含项目的列表,并希望按“Store.storeName”对其进行排序,到目前为止该列表有效。但在对数据进行排序后,我的删除功能不再起作用。我认为那是因为排序后 $index 是错误的,所以错误的数据被删除了。

我该如何解决这个问题?在范围内而不是 View 中对数据进行排序?如何做到这一点?

这是一些相关代码:

在 View 中:

<tr ng-repeat="item in items | orderBy:'Store.storeName'">
                <td><input class="toggle" type="checkbox" ng-model="item.Completed"></td>
                <td>{{item.Name}}</td>
                <td>{{item.Quantity}} Stk.</td>
                <td>{{item.Price || 0 | number:2}} €</td>                
                <td>{{item.Quantity*item.Price|| 0 | number:2}} €</td>
                <td>{{item.Store.storeName}}</td> 
                <td><a><img src="img/delete.png" ng-click="removeItem($index)">{{$index}}</a></td>
            </tr>

在我的 Controller 中,我有这个删除功能,它应该删除特定的数据:

$scope.removeItem = function(index){
        $scope.items.splice(index,1);
    }

这在 View 中订购之前效果很好。 如果缺少重要的内容,请立即告诉我。

谢谢!

最佳答案

相反,或者中继 $index - 正如您所注意到的 - 将指向排序/过滤数组中的索引,您可以将项目本身传递给您的 removeItem功能:

<a><img src="img/delete.png" ng-click="removeItem(item)">{{$index}}</a>

并修改 removeItem 函数以使用数组的 indexOf 方法查找索引,如下所示:

$scope.removeItem = function(item){
   $scope.items.splice($scope.items.indexOf(item),1);
}

关于orderBy后Angularjs错误$index,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16118762/

相关文章:

c++ - 快速排序不适用于大型数组

arrays - react native 排序问题

jQuery 数组中元素的总数

javascript - AngularJS 获取和设置元素高度

java - 按对象字段对列表进行排序

javascript - 检查文本框中的整个字符串值是否为零(0)或特殊字符

java - JAR 索引和 getResources

optimization - 优化 MongoDB 查询或索引

javascript - 动态引入的 Angular Controller 的数据绑定(bind)

javascript - 删除 JavaScript 中的重复代码;更新传递给函数的对象