AngularJS -从控制器内部获取过滤的ng-repeat $index
AngularJS - Getting filtered ng-repeat $index from inside a controller
我有一个带有过滤器的ng-repeat
列表。我似乎找不到如何从我的控制器内部获得可见的$index
。
我可以很容易地显示它,当列表被过滤时,它会动态变化。
<div ng-repeat="stuff in myList| filter:query | orderBy:orderProperty">
<label>{{$index}}</label>
</div>
但我似乎无法从控制器内以编程方式获得正确的$index
。我已经尝试了$scope.myList.indexOf(myObj
)和for循环,但我仍然没有得到正确的$索引,我得到了原始的,未过滤的列表中项目的$index
。
我需要这个的原因是因为我有一个全局音频播放器,我需要自动播放过滤列表。所以当我的音频"结束"时,我开始在可见列表中播放next()
元素。
解决这个问题的一种方法是编写自己的自定义过滤器,并在返回数组之前为每个元素添加索引,然后使用该索引而不是$index。
下面是一些示例代码。
angular.module('myFilters', []).filter('filterWithIndex', function() {
return function(input) {
var filteredInput = [];
for(var i = 0; i < input.length; i ++) {
filteredInput.push(input[i]);
filteredInput[i].index = i + 1;
}
return filteredInput;
};
});
如果你不介意在代码中做所有的过滤和排序,你可以在你的控制器中做所有的事情。只要确保你先把$filter
注入它。
// $filter must be injected earlier
$scope.filteredList = function(list) {
var result;
result = $filter('filter')(list, $scope.query);
result = $filter('orderBy')(result, $scope.orderProperty);
return result;
};
然后你的HTML变成
<div ng-repeat="stuff in filteredList(myList)">
<label>{{$index}}</label>
</div>
相关文章:
- 如何在ng repeat angular js中使用$index
- AngularJS:如何在ng repeat中使用$index
- AngularJS: ng-repeat, filter and index
- 在angularjs中使用ng repeat时扩展$index的范围
- 在angularjs ng-repeat中使用$index来生成css类
- 如何使用 ng-repeat $index 在数组中查找元素
- AngularJS ng-repeat列表是动态构建的,$index始终为零
- AngularJS ng-repeat array index iteration
- 如何在 AngularJS 中使用 ng-repeat 动态生成 ng-model=“my_{{$index}}”
- angularjs $index when ng-hide with ng-repeat
- AngularJS:$index如何在ng-repeat中工作
- orderBy 和 $Index ng-repeat中的问题e
- Access $index from ng-repeat
- Angularjs ng repeat - delete by $index
- [Angular.js + JSF]不能在ng-repeat中使用$index获取数组列表中的元素
- $index of ng-repeat not incremented inside ng-if
- AngularJS嵌套的ng-repeat访问Index
- AngularJS -从控制器内部获取过滤的ng-repeat $index
- ng-repeat, $index and offset problems?
- 使用angularjs ng repeat $index来命名模型