嗨,我正在尝试围绕 angularjs 中过滤器的长度构建功能,尽管它在 View 中正常工作,但在 Controller 中变量似乎仍然过时......
当我单击下面的 div 时,它会过滤列表并调用 filterby
函数。新过滤列表的长度输出在 View 中正确更新。然而,在函数本身中,我有一个日志集,当我单击 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'}
];
编辑:好吧,这并不是说它根本不起作用,它只是显示以前的值,就好像它一直在后面单击一样,所以它与 View 中的变量在名单已制定。但我不确定如何确保 Controller 中的变量是最新值。
最佳答案
查看plunker
添加在下面
$scope.filtered = $filter('filter')($scope.events, $scope.query)
在 $scope.filterby 函数中
关于javascript - 过滤器变量未在 Controller AngularJS 中更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26084208/