2016-09-22 7 views
0

私はこのような2つの配列を形作っています角度NG-オプションは

$scope.values_array = ['string1', 'string2', 'string3', 'string4']; 
$scope.skip_array = ['string2', 'string3']; 

と私はこのようなNG-オプションを使用しよう:

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

これをエラーは発生しませんが、ドロップダウンには何も表示されません。 "& & skip_array.indexOf(value)"がなければ、values_arrayのすべてのオプションが表示されます。

答えて

6

HTML:

<select ng-model="selectedValue" ng-options="value as value for value in values_array | filter:skipValues"></select> 

コントローラ:

$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']; 

jsfiddle

UDPATE:

あなたは、フィルタ関数に追加のパラメータを渡す場合

HTML:

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

コントローラ:filterの使用についてどのように

$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']; 

jsfiddle

+0

私は余分なパラメータを追加したい場合は、私の場合、私は基づいてそれをスキップすることができるようにしたいです渡されたint、このパラメータを関数にどのように追加できますか? (1つのパラメータで関数を呼び出して関数に追加しても機能しません) – schuimer

+0

@schuimer質問の解決策を投稿に更新しました。 –

+0

魅力的な作品です!どうもありがとうございました! – schuimer

1

?同様

<select ng-options="value as value for value in (values_array | yourFilter)"></select> 

yourFilterthis answerのラインで何かあるかもしれない:

.filter('inArray', function($filter){ 
    return function(list, arrayFilter, element){ 
     if(arrayFilter){ 
      return $filter("filter")(list, function(listItem){ 
       return arrayFilter.indexOf(listItem[element]) != -1; 
      }); 
     } 
    }; 
}); 
1

ちょうどフィルタリングされた値を返しますfunctionを使用しています。ここで

<select name="mySelect" id="mySelect" ng-model="mySelectmodel" ng-options="value as value for value in filteredValues(values_array)"> 

$scope.filteredValues = function() { 
    return $scope.values_array.filter(function (val) { 
     return $scope.skip_array.indexOf(val) === -1; 
     }); 
    }; 

FULL EXAMPLE

0

Htmlの

<select ng-modal="yourmodalname" ng-options="x.id as x.name for x in arraylistofvalue | filter : selectedvalues"></select 
フル実施例であるあなたはまた、別の filterを使用することができますが、 functionは、この場合にははるかに簡単にする必要があります

角度コントローラ

$scope.selectedvalues = function(value , index , array){ 
    if (value.id == 1){ 
      return $scope.arraylistofvalue.indexOf(value); 
     } 

     } 

配列リスト

$scope.arraylistofvalue = [{id : 1 ,name : 'value1'}{id : 2 ,name : 'value2'}] 
関連する問題