Fre*_*red 4 angularjs angularjs-ng-repeat angularjs-controller
我在我的html文件中使用ng-repeat来显示过滤的项目:
<li ng-repeat="item in (filteredItems = (items | filter:query))">
{{ item.name }}
</a>
Run Code Online (Sandbox Code Playgroud)
在控制器中,我想根据他的一个属性获取项目的索引.
精度:我想在过滤列表中获取索引,而不是在整个列表中.
例如,这将是女巫名称的索引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');
}
]);
Run Code Online (Sandbox Code Playgroud)
http://plnkr.co/edit/C8gL9qV1MyonTwDENO9L?p=preview
任何的想法 ?
ng-repeat表达式在作用域上创建filteredList数组.
<li ng-repeat="item in (filteredItems = (items | filter:query))">
您可以像任何数组一样遍历它,检查与name参数匹配的项目.
$scope.filteredItems
这是一个演示:http://plnkr.co/69nnbaZaulgX0odG7g7Y
请参阅此相关文章:AngularJS - 如何获取ngRepeat过滤结果参考
更新
您的注释表明您不想等待ng-repeat来创建过滤项目数组.您可以使用$ filter服务在页面加载之前轻松初始化相同的数组.使用:
$scope.filteredItems = $filter('filter')($scope.items, {name: $scope.query}, false)
Run Code Online (Sandbox Code Playgroud)
这样做不会影响在DOM创建期间ng-repeat将其过滤结果保存到同一个filteredItems数组.
这是一个更新的(和交互式)演示:http://plnkr.co/NSvBz1yWvmeFgXITutZF