嗨Im試圖圍繞angularjs過濾器的長度建立功能,雖然它的工作,因爲它應該在視圖中,在控制器中的變量似乎保持過時...過濾器變量不更新在控制器angularjs
當我點擊下面的div時,它會過濾一個列表並調用filterby
函數。新過濾列表的長度輸出在視圖中正確更新。然而,在函數本身,我有一個日誌集,它仍然顯示舊的長度,當我點擊div。
<div ng-repeat="filter in filters" ng-click="filterby(filter.filter_type)">{{filter.filter_type}}</div>
<ul>
<li ng-repeat="event in filtered = (events | filter:query) | orderBy:'-event_date' ">
<span >{{event.event_date}},{{event.event_name}}, {{event.event_venue}}, {{event.event_description}} </span>
</li>
</ul>
<br />Length of filtered items {{filtered.length}}
而且我認爲....
$scope.filterby = function(filterby) {
if (filterby == 'ALL') {
$scope.query = '';
}
else {
$scope.query = filterby;
}
console.log($scope.filtered.length);
};
我的過濾數據:
$scope.filters = [
{'filter_type' : 'ALL'},
{'filter_type' : 'Macnass'}
];
編輯:好的它不是,它在窮人所有的工作,它只是顯示前值,就好像它一直在後麪點擊一樣,所以它與視圖中的變量在列表生成後更新有關。但我不知道如何去確保控制器中的變量是最新的價值。
Plunker:http://plnkr.co/edit/u7KpqYx8gDwaaXEvGeMn?p=preview
你可以設置一個plunker,顯示了問題... – harishr 2014-09-28 12:08:32
我已經添加了一個活塞,這樣做後我可以清楚地看到問題所在,即console.log在新過濾之前顯示應用(我認爲),但林不知如何解決這個問題。 (我應該補充說,我對angularjs來說很新穎) – Adrian 2014-09-28 12:32:17
可能更好,只是在控制器中進行過濾。然後你可以訪問原始數組和過濾數組 – charlietfl 2014-09-28 12:36:45