javascript - 过滤器变量未在 Controller AngularJS 中更新

标签 javascript angularjs

嗨,我正在尝试围绕 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 中的变量是最新值。

骗子:http://plnkr.co/edit/u7KpqYx8gDwaaXEvGeMn?p=preview

最佳答案

查看plunker

添加在下面

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

在 $scope.filterby 函数中

关于javascript - 过滤器变量未在 Controller AngularJS 中更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26084208/

相关文章:

javascript - 如何确认是否使用了 ES6(ReactJS + Redux)

javascript - 如何让用户在屏幕上输入以反射(reflect)点击事件(js,html)

html - Angularjs Angular 计时器和 $http

javascript - Angular 路线不触发 Controller

javascript - 如何在JS函数中使用$(this)然后找到attr?

javascript - React Native Flatlist 上拉时不刷新数据

javascript - AngularJs Ng-Grid 从另一个字段添加带有 Id 的链接到模板

javascript - 表单提交时 Angular $scope 未定义

javascript - 如何在横幅上添加和对齐按钮?

jquery - 如何动态地将 ng-pattern 属性添加到 html 元素?