将每个forEach对象推入范围

时间:2016-01-07 02:39:32

标签: angularjs

我有一个包含多个对象的范围。我只想显示具有department: Directing值的对象。

所以我写了forEach来检查department的值是否等于字符串Directing

var directed = $scope.moviesFromActorResponse.credits.crew
angular.forEach(directed, function(directed) {
    if (directed.department == 'Directing') {
        console.log(directed)
    }
});

这很好用,控制台日志只返回与定向字符串匹配的对象。但是,如何将forEach中的每个对象存储到一个$scope中,以便我可以在ng-repeat中使用它?

2 个答案:

答案 0 :(得分:1)

试试这个

$scope.myList=directed.filter(function(x){ return x.department == 'Directing'; });

然后从$scope.myList

显示ng-repeat

答案 1 :(得分:0)

有几种方法可以给猫皮肤。

首先,angular.forEach示例显示它需要三个参数:一个数组或对象,一个迭代器,以及迭代器中this引用的对象。在示例中,第三个参数是一个空数组,它将结果推入其中。它优于Javascript forEach的优点是处理hasOwnProperty和未定义的值。 https://docs.angularjs.org/api/ng/function/angular.forEach

var values = {name: 'misko', gender: 'male'}; var log = []; angular.forEach(values, function(value, key) { this.push(key + ': ' + value); }, log); expect(log).toEqual(['name: misko', 'gender: male']);

Javascript .filter仅适用于数组。

此插件显示了在Javascript和HTML中使用$ filter服务

http://plnkr.co/edit/7FlTPg?p=info

angular.module('app', [])
  .controller('ctrl', function($filter) {
    var vm = this;
    vm.search = {
      'dept': 'directing'
    };
    vm.crew = [{
      'name': 'fred',
      'dept': 'camera'
    }, {
      'name': 'ethel',
      'dept': 'camera'
    }, {
      'name': 'lucy',
      'dept': 'camera'
    }, {
      'name': 'ricky',
      'dept': 'directing'
    }];
    vm.directors = $filter('filter')(vm.crew, vm.search, true);
  })

<html>

  <head>
    <script data-require="angular.js@1.4.8" data-semver="1.4.8" src="https://code.angularjs.org/1.4.8/angular.js"></script>
    <link rel="stylesheet" href="style.css" />
    <script src="script.js"></script>
  </head>

  <body ng-app='app' ng-controller='ctrl as ct'>
    <h1>Filter/forEach example</h1>
    <h2>No filter</h2>
    <p ng-repeat='member in ct.crew'>{{member}}</p>
    <h2>filter in ng-repeat</h2>
     <p ng-repeat='member in ct.crew|filter:ct.search'>{{member}}</p>
         <h2>Using $filter in Javascript</h2>
    <p ng-repeat='member in ct.directors'>{{member}}</p>
  </body>

</html>