我有一个范围变量,如下所示:
$scope.people = [
{'id':'1' ,'name':'John','category':'m'},
{'id':'2', 'name':'Jack','category':'m'},
{'id':'3','name':'Mark','category':'m'},
{'id':'4','name':'Ernie','category':'m'},
{'id':'5','name':'Jane','category':'w'},
{'id':'6','name':'Jill','category':'w'},
{'id':'7','name':'Betty','category':'w'},
{'id':'8','name':'Mary','category':'w'}
];
这是我为此问题的目的而创建的示例范围变量。但我将从服务中获取此数据。我想要实现的是,如何将此范围变量从控制器内过滤到不同的变量?
例如,我想在给定范围内制作以下2个新范围:
$scope.men = [
{'id':'1' ,'name':'John','category':'m'},
{'id':'2', 'name':'Jack','category':'m'},
{'id':'3','name':'Mark','category':'m'},
{'id':'4','name':'Ernie','category':'m'}
];
$scope.women = [
{'id':'5','name':'Jane','category':'w'},
{'id':'6','name':'Jill','category':'w'},
{'id':'7','name':'Betty','category':'w'},
{'id':'8','name':'Mary','category':'w'}
];
我如何实现这一目标?任何知识都会非常有用
答案 0 :(得分:1)
您可以使用array.filter:
function isMan(person){
return person.category == 'm';
}
function isWoman(person){
return person.category == 'w';
}
$scope.men = $scope.people.filter(isMan);
$scope.women = $scope.people.filter(isWoman);
对于旧版浏览器,您需要填充过滤器。
或者,您可以使用下划线的filter功能。
答案 1 :(得分:0)
你需要使用一些javascript lib,如underscore.js
作为一个例子
_.groupBy($scope.people, function(v){ return v.category == 'm' });
不确定源代码。