2015-05-10 17 views
6

"Sarı renk seç" düğmesine tıklandığında, seçili listeye sarı eklemek istiyorum. Sarı seçiliyor, ancak açılan menü hala sarı gösteriyor. Aynı şekilde, "sarı rengin seçimini kaldır" düğmesine tıklatarak sarıyı kaldırmak istiyorum. Sarı işaretini kaldırabiliyorum, ancak açılan menüde sarı görünmüyor. Lütfen bu konuda bana yardımcı olun. HTML:Açısal seçim seçici çoklu seçim: Denetleyicideki bazı öğeleri seçerken açılır menüde güncelleme yapılmıyor

<ui-select multiple ng-model="multipleDemo.colors" theme="select2" ng-disabled="disabled" style="width: 300px;"> 
    <ui-select-match placeholder="Select colors...">{{$item}}</ui-select-match> 
    <ui-select-choices repeat="color in availableColors | filter:$select.search"> 
     {{color}} 
    </ui-select-choices> 
    </ui-select> 
    <p>Selected: {{multipleDemo.colors}}</p> 

    <input type="button" value="select yellow color" ng-click="selectYellowColor()"/> 
    <input type="button" value="deselect yellow color" ng-click="deselectYellowColor()"/> 

JS: Bu ui-select bileşeninde bir issue: İşte

$scope.availableColors = ['Red','Green','Blue','Yellow','Magenta','Maroon','Umbra','Turquoise']; 
    $scope.multipleDemo = {}; 
    $scope.multipleDemo.colors = ['Blue','Red']; 

    $scope.selectYellowColor = function(){ 
    if($scope.multipleDemo.colors.indexOf($scope.availableColors[3]) == -1){ 
     $scope.multipleDemo.colors.push($scope.availableColors[3]); 
    } 
    }; 

    $scope.deselectYellowColor = function(){ 
    if($scope.multipleDemo.colors.indexOf($scope.availableColors[3]) != -1){ 
     var index = $scope.multipleDemo.colors.indexOf($scope.availableColors[3]); 
     $scope.multipleDemo.colors.splice(index, 1); 
    } 
    }; 

plunker bağlantı http://plnkr.co/edit/AHZj1zAdOXIt6gICBMuN?p=preview

cevap

7

UPD olduğunu. Çözümüm bu sorun çözülmedikçe kısmi bir çözüm olarak kullanabilirsiniz.

ui-select, öğelerin filtrelenmesini yapmaz. Yalnızca ifadenizi ui-select-choices'un repeat özniteliğinde değerlendiriyor. Önceden kullanılmış değeri öneriden çıkarmak istiyorsanız, bunu kendi başınıza yapabilirsiniz.

repeat

<ui-select-choices repeat="color in availableColors | filter:omitSelectedColors | filter:$select.search"> 

içine ekstra filtre ekle Ve sonra filtreleme işlevi tanımlayın: Bu bir ölçüde yardımcı beni

$scope.omitSelectedColors = function(color) { 
    return $scope.multipleDemo.colors.indexOf(color) === -1; 
} 
+0

teşekkür ederiz. Sarı seçildiğinde, açılır menü güncellenir ve sarı listelenmez. Fakat sarıyı yok etmede, tekrar açılana geri eklenmiyor. Güncelleştirilen pluncker bağlantısı: http://plnkr.co/edit/zMWzYbOmHzfyfe9tob52?p=preview – SaiGiridhar

+0

UI seçim kaynaklarından sorumlu bir kod parçası bulundu. Çözümüm bu sorun için bir çözümdür: https://github.com/angular-ui/ui-select/issues/918. Sanırım kütüphanede –

+0

numaralı kütüphanede değişiklik yapmadan tamamen tamir etmenin bir yolu yok. Bu konunun ümit edilmesi daha çabuk çözülür. Benzer olan başka bir çoklu seçim eklentisi önerebilir misiniz? Ben hiç alamadım. – SaiGiridhar

İlgili konular