的ngRepeat过滤结果引用我使用的是NG重复指令与过滤器,像这样:AngularJS - 如何让内部控制器
<tr ng-repeat="entry in (filteredEntries = (entries | filter:hasGroup | filter:readingFilter | orderBy:data.sortType:data.sortReverse:true))"></tr>
<span>{{filteredEntries.length}}</span>
我使用$ stateProvider加载视图和控制器
$stateProvider
.state('welcome', {
url: "/",
templateUrl: viewsPrefix + "welcome.html",
data: {
pageTitle: 'Welcome'
},
controller: "WelcomeCtrl"
})
.state('data', {
url: "/data",
templateUrl: viewsPrefix + "data.html",
data: {
pageTitle: 'Data'
},
controller: "DataCtrl",
})
这里是我的控制器的一个片段:
.controller('DataCtrl', ['$scope', '$rootScope', '$state', '$translate', '$filter') {
$scope.filteredEntries = [];
$scope.entries = [1, 2, 3, 4, 5, 6,7];
$scope.hasGroup = function(){return true;}
$scope.readingFilter = function(){return true;}
setInterval(function() {
console.log($scope.filteredEntries);
}, 500);
});
这样的代码没有问题,但是我需要使用$scope.filteredEntries
访问我的控制器中的filteredEntries属性,这应该没问题。不幸的是,这不起作用,我无法弄清楚为什么会发生这种情况。
目前很难回答你的问题。你在问为什么你不能访问控制器内的'filteredEntities'。然而,过滤是一个有序的过程,并且不知道你的控制器代码是什么样子,但在访问数据时你所处理的过程中的哪一步并不明显。数据在您尝试访问该值时尚未过滤完全有可能。 – Claies
评论而不是回答,因为这不是答案。您应该考虑使用ng-change/watch过滤控制器中的数据,以便在需要时重新过滤数据。在angular2中,filter和orderBy过滤器会消失,因为在视图中做这种事情最终会看起来很丑陋,而且会导致效率下降。有关这些决定,请参阅https://angular.io/docs/ts/latest/cookbook/a1-a2-quick-reference.html#!#filters-pipes。 – stygma
检查https://jsfiddle.net/mohamedsalah/z54rkg17/2/ –