我目前有:
ng-repeat="pesron in people | orderBy:variable"
当事件发生时,变量会发生变化,因此人的顺序也会发生变化。
问题:如何以阵列方式访问控制器中的人员?
我试过了:
angular.forEach($rootScope.people, function(value,index) {
console.log(value);
});
但是,这只会按照将变量添加到范围中的顺序给出变量。
答案 0 :(得分:1)
将$filter
注入您的控制器,并执行以下操作
var orderedPeople = $filter('orderBy')($scope.people, 'variable')
如果您希望在variable
更改时更改此内容,则需要将作业分配到$scope.$watch
。
然而,更大的情况是,您可能不应该以这种方式构建您的应用程序。也就是说,你是
variable
仅偶尔更改一次。以下效率更高:
在您的控制器中:
people = []; // initialize me
$scope.$watch(function() { return people; }, sortList, true);
// we're resorting whenever any property on $scope.people changes.
// This isn't the best solution if people is a huge and complex object
function sortList() {
$scope.orderedPeople = $filter('orderBy')(people, 'variable');
}
// somewhere else
doSomethingWith($scope.orderedPeople);
在您看来:
<div ng-repeat="person in orderedPeople"></div>
请参阅https://docs.angularjs.org/api/ng/filter/orderBy和https://docs.angularjs.org/api/ng/filter/filter