Angular ng-options,在简单的字符串数组中具有条件值

sch*_*mer 0 javascript conditional filter angularjs

我有两个像这样的阵列:

$scope.values_array = ['string1', 'string2', 'string3', 'string4'];
$scope.skip_array = ['string2', 'string3'];
Run Code Online (Sandbox Code Playgroud)

我尝试使用这样的ng-options:

<select ng-options="value as value for value in values_array && skip_array.indexOf(value) === -1"></select>
Run Code Online (Sandbox Code Playgroud)

这不会产生错误,但下拉列表中不会显示任何内容.如果没有"&& skip_array.indexOf(value)",它会显示values_array中的所有选项.

Gio*_*ren 7

HTML:

<select ng-model="selectedValue" ng-options="value as value for value in values_array | filter:skipValues"></select>
Run Code Online (Sandbox Code Playgroud)

控制器:

$scope.skipValues = function(value, index, array) {
    return $scope.skip_array.indexOf(value) === -1;
};
$scope.values_array = ['string1', 'string2', 'string3', 'string4'];
$scope.skip_array = ['string2', 'string3'];
Run Code Online (Sandbox Code Playgroud)

的jsfiddle

UDPATE:

如果要将额外参数传递给过滤器函数

HTML:

<select ng-model="selectedValue" ng-options="value as value for value in values_array | filter:skipValues(1)"></select>
Run Code Online (Sandbox Code Playgroud)

控制器:

$scope.skipValues = function(anInt) {
    return function(value, index, array) {
        return $scope.skip_array.indexOf(value) === -1 && anInt > 0;
    }
};
$scope.values_array = ['string1', 'string2', 'string3', 'string4'];
$scope.skip_array = ['string2', 'string3'];
Run Code Online (Sandbox Code Playgroud)

的jsfiddle