的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/ –