2017-06-09 3 views
1

私の配列の値を追加して削除するためのselectを作成したいと思います。しかし値は一意でなければなりません。配列に表示されていない場合、Angularjsは表示値を選択します

私が選択

<div ng-app="myApp"> 
    <div ng-controller="myController"> 
     <p>Select something</p> 
    <select ng-model="selectedBucket" 
    ng-options="row as row.display for row in bucketEnum | filter:bootstrapValues"> 
    </select> 

    <button ng-click="add(selectedBucket.value)"> 
    add 
    </button> 

     <br> 
     {{initialSet}} 
     <br> 
     {{bucketEnum}} 
    </div> 
</div> 

とコントローラとフィルタの値を表示または非表示にする方法私ができるかわからないので、これは正しく私のコードが、dosen't作品です:

var app = angular.module('myApp', []); 
    app.controller('myController', function ($scope, $filter) { 
     $scope.initialSet = [1, 2, 4, 7]; 
     $scope.bucketEnum = [ 
      { display: '0', value: 0, bool:true }, 
      { display: '1', value: 1, bool:true}, 
      { display: '2', value: 2, bool:true }, 
      { display: '3', value: 3, bool:true }, 
      { display: '4', value: 4, bool:true }, 
      { display: '5', value: 5, bool:true }, 
      { display: '6', value: 6, bool:true }, 
      { display: '7', value: 7, bool:true } 
     ]; 
       $scope.add = function(value){ 
       $scope.initialSet.push(value); 
      $scope.selectedBucket = $filter('bootstrapValues')($scope.initialSet, $scope.bucketEnum); 
      } 
     }); 

     app.filter('bootstrapValues', function(){ 
     return function(initial, baseBucket){ 
      var result = []; 
      for(var i = 0; i < initial.length; i++){ 
       var flag = false; 
       for(var j=1; j<baseBucket.length; j++){ //from 1 or 0.. you call 
        if(initial[i] === baseBucket[j].value){ 
         flag = true; 
         baseBucket[j].bool = false; 
         break; // if there are repeated elements 
        } 
       } 
      } 
      return result; 
     }; 
}); 
+0

は、あなたが選択表示を無効にしたいんを参照してください。すでに 'initialSet'配列に含まれていた場合は値を返しますか、それともselectオプションでは必要ありませんか? – anoop

+0

値が配列内にある場合、selectの値を非表示にしたい –

+0

残念ながら、要素を隠すように設定できる属性はないと思います。おそらくあなたのための解決策は、表示値の配列を作成し、それを表示したいかもしれない2番目の配列のデータから読み込むことでしょう。 –

答えて

0

現在の追加値を無効にしたい場合はの構文をとすると、これを達成することができます。角度1.4+のバージョン

(無効のため)。

をあなたのコードのこのfiddleを参照してください、あなたは現在のselectに付加価値を削除したい場合は、このfiddle(削除用)

関連する問題