过滤器变量未在控制器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

添加到下方

$scope.filtered = $filter('filter')($scope.events, $scope.query)

在$scope.filterby函数中

最新更新