gpt4 book ai didi

angularjs - 如何根据其属性之一的值在 Controller 中获取 ng-repeat 过滤器中项目的索引?

转载 作者:行者123 更新时间:2023-12-03 08:21:00 25 4
gpt4 key购买 nike

我在我的 html 文件中使用 ng-repeat 来显示过滤的项目:

<li ng-repeat="item in (filteredItems = (items | filter:query))">
{{ item.name }}
</a>

在 Controller 中,我想根据他的属性之一获取项目的索引。

精度:我想得到 过滤列表中的索引 而不是在整个列表中。

例如,这里将是项目女巫的索引为 some_item_7 .
var app = angular.module('myApp', []);

app.controller('MyCtrl', ['$scope',
function MyCtrl($scope) {

$scope.query = 'some';

$scope.items =
[
{ name: 'some_item_1' },
{ name: 'another_item_2' },
{ name: 'some_item_3' },
{ name: 'another_item_4' },
{ name: 'some_item_5' },
{ name: 'another_item_6' },
{ name: 'some_item_7' },
{ name: 'another_item_8' },
{ name: 'some_item_9' }
];

$scope.itemNext = function (item) {
console.log(item.name);
};

$scope.getIndexFromName = function (name) {
console.log("trying to get the index of the item with name = " + name);
}

$scope.getIndexFromName('some_item_7');

}
]);

http://plnkr.co/edit/C8gL9qV1MyonTwDENO9L?p=preview

任何的想法 ?

最佳答案

您的 ng-repeat 表达式会在您的范围内创建 filtersList 数组。<li ng-repeat="item in (filteredItems = (items | filter:query))">
您可以像任何数组一样循环遍历它,检查与 name 参数匹配的项目。$scope.filteredItems
这是一个演示:http://plnkr.co/69nnbaZaulgX0odG7g7Y

请参阅此相关帖子:AngularJS - how to get an ngRepeat filtered result reference

更新
您的评论表明您不想等待 ng-repeat 创建过滤项数组。您可以使用 $filter服务在页面加载之前轻松初始化相同的数组。用:

$scope.filteredItems = $filter('filter')($scope.items, {name: $scope.query}, false)

这样做不会干扰 ng-repeat将其过滤结果保存到相同的 filteredItems DOM 创建期间的数组。

这是更新的(和交互式的) demo : http://plnkr.co/NSvBz1yWvmeFgXITutZF

关于angularjs - 如何根据其属性之一的值在 Controller 中获取 ng-repeat 过滤器中项目的索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22357197/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com