嗨我试图围绕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'}
];
编辑:好吧,它不是它根本不工作,它只是显示前一个值,好像它一直在后面一次点击,所以它与视图中的变量更新后的事实有关列表是。但我不确定如何确保控制器中的变量是最新值。
答案 0 :(得分:1)
查看plunker
在下面添加
$scope.filtered = $filter('filter')($scope.events, $scope.query)
$ scope.filterby函数中的