我有一个ng-repeat表
ng-repeat="project in projects"
我在项目prj_city
中有一个属性。我想过滤这个值
ng-repeat="project in projects | filter={prj_city: <value>}
但我希望<value>
是一个数组与多个城市,而不是一个字符串。是否有任何简单的方法来做到这一点,或者我必须在我的控制器手动做这个过滤器?
最可能是控制器中的自定义过滤器,应该足够简单:
var filteredCities = ["LosAngelos", "etc.."];
$scope.arrayFilter = function(project) {
for (var i = 0; i < filteredCities.length; i++) {
if (filteredCities[i] == project.prj_city)
return true;
}
return false
}
和呼叫:
ng-repeat="project in projects | filter: arrayFilter"
您需要在控制器上创建一个过滤器函数。比如:
$scope.filteredCities = function(city) {
return ($scope.userFilteredCities.indexOf(city) !== -1);
};
$scope.userFilteredCities;//List of filtered cities
在控制器中定义以下函数:
// use a map for faster filtering
var acceptedCityMap = {};
angular.forEach(acceptedCities, function(city) {
// case insensitive search. But you're not forced to
acceptedCityMap[city.toLowerCase()] = true;
});
$scope.isProjectedAccepted = function(project) {
// case insensitive search. But you're not forced to
return acceptedCityMap[project.prj_city.toLowerCase()];
}
然后在你的视图中:
ng-repeat="project in projects | filter:isProjectAccepted"