【问题标题】:How to get the return filter array data in angular js controller?如何在角度 js 控制器中获取返回过滤器数组数据?
【发布时间】:2017-09-12 18:56:20
【问题描述】:

我正在为我的应用程序使用自定义过滤器。

div class="cust-post" ng-repeat="post in newsfeeddata | customFilter:companyFilters"

在上面的代码中,customFilter 将我需要使用的数组数据返回到我的控制器中。

我不知道如何检索该数组数据。

请任何人帮助我。

【问题讨论】:

  • 您可以将过滤后的值分配给属性:ng-repeat="post in (filteredData = (newsfeeddata | customFilter:companyFilters))"。您也可以使用as 表示法:ng-repeat="post in newsfeeddata | customFilter:companyFilters as filteredData"

标签: javascript angularjs angularjs-ng-repeat angularjs-controller angularjs-filter


【解决方案1】:

ng-repeat 中尝试as 关键字,然后您可以通过$scope.array 访问过滤后的数组:

angular.module('app', [])
.controller('ctrl', ['$scope', function($scope) {
    $scope.items=[
      {name:'A'},
      {name:'BA'},
      {name:'CB'},
    ];
    $scope.test = function() {  
      $scope.out = $scope.array.map(x => x.name).join(', ');      
    }
}])
<script src="//code.angularjs.org/snapshot/angular.min.js"></script>

<div ng-app='app' ng-controller="ctrl">
  <input type='text' ng-model='search' ng-init='search = "A"'/>
  <ul>
     <li ng-repeat='item in items | filter: search as array'>{{item}}</li>
  </ul>
  <input type='button' ng-click='test()' value='Test'/> 
  <hr/>
  {{out}}
</div>

【讨论】:

    【解决方案2】:

    返回数组的过滤函数:

    app.filter('customFilter', function() {
        return function( newsfeeddata, companyFilters ) {
          return items.filter(function(element){
            return companyFilters >= element.minValue;//Compare the values
          });
        }
    });
    

    在控制器中:

    var filteredData = $filter('customFilter')(newsfeeddata, companyFilters);
    

    【讨论】:

      猜你喜欢
      • 2017-04-13
      • 2016-01-10
      • 1970-01-01
      • 2023-01-25
      • 1970-01-01
      • 2013-08-24
      • 2016-05-12
      • 1970-01-01
      • 2014-09-08
      相关资源
      最近更新 更多