过滤器变量不在控制器angularjs中更新

时间:2014-09-28 11:01:20

标签: javascript 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

1 个答案:

答案 0 :(得分:1)

查看plunker

在下面添加

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

中的