我有一个包含多个对象的范围。我只想显示具有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
中使用它?
答案 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>