使用数组中的值筛选ng-repeat



我有一个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"

最新更新