2017-01-13 4 views
1

Ich möchte eine Option in meiner Auswahl deaktivieren, aber das Modell behalten Sie die Option und zeigen Sie wie ausgewählt.ng-Optionen deaktivieren Option aber immer noch als ausgewählt

diese Geige Siehe: https://jsfiddle.net/U3pVM/29403/

<div ng-app=selectExample ng-controller="ExampleController"> 

<select ng-model="myColor" 
     ng-options="color.name group by color.shade disable when color.notAnOption for color in colors"> 
</select> 
<button ng-click="colors[0].notAnOption = true"> 
disable black 
</button> 
<button ng-click="colors[0].notAnOption = false"> 
enable black 
</button> 
</div> 

angular.module('selectExample', []) 
.controller('ExampleController', ['$scope', function($scope) { 

$scope.colors = [ 
    {name:'black', shade:'dark'}, 
    {name:'white', shade:'light', notAnOption: true}, 
    {name:'red', shade:'dark'}, 
    {name:'blue', shade:'dark', notAnOption: true}, 
    {name:'yellow', shade:'light', notAnOption: false} 
]; 
$scope.myColor = $scope.colors[0]; // red 
}]); 

Wenn Sie "schwarz" die Modelländerungen auf 'Null' zu deaktivieren.

Ich möchte es nicht auswählbar sein, aber immer noch ausgewählt. Oder erneut ausgewählt, wenn Sie es erneut aktivieren.

Irgendwelche Ideen?

+0

Sie könnten ng-repeat statt ng-Optionen verwenden, das ist, was ich bisher habe: https://jsfiddle.net/r47f4wv7/1/ vielleicht könnte es sein, nützlich –

+0

ich benutzte ng-repeat vorher, es hat das gleiche Verhalten –

+0

Aber schau die Art, wie ich die ng-Klasse-Direktive statt den Wert als deaktiviert markieren. –

Antwort

0

Verwenden Sie die ng-disabled-Anweisung im select-Element.

<select ng-model="myColor" ng-options="color.name group by color.shade disable when color.notAnOption for color in colors" ng-disabled="colors[0].notAnOption"> 
</select> 

<button ng-click="colors[0].notAnOption = true; myColor = null"> 
    disable black 
    </button> 
+0

Ich glaube nicht, dass Sie meine Frage verstanden haben. Ich möchte, dass Schwarz ausgewählt bleibt, nachdem ich es deaktiviert habe. –

+0

Entfernen Sie dann myColor = null bei ng-click –

1

Ich habe eine Funktion resetColor() machte meine gewählte Farbe zurücksetzen programmatisch, nachdem es vorübergehend deaktiviert wurde.

$scope.resetColor = function() { 
if ($scope.myColor && $scope.saveMyColor){ 
    return; 
    } 
    if ($scope.myColor){ 
    $scope.saveMyColor = $scope.myColor; 
    return; 
    } 
    if ($scope.saveMyColor){ 
    $scope.myColor = $scope.saveMyColor; 
    return; 
} 
} 

Sie können jetzt schwarz deaktivieren und es wird nach der erneuten Aktivierung festgelegt.

Siehe Arbeitsbeispiel Geige: https://jsfiddle.net/U3pVM/29429/

Verwandte Themen