2014-07-15 8 views
12

Sono abbastanza nuovo per Angular e provare le opzioni di ng. Nel mio controller, ho:nascondere un'opzione in ng-options

$scope.permissionLevels = [ 
         { value: "ROLE_READ", text: "Read Only" }, 
         { value: "ROLE_WRITE", text: "Write" } 
        ]; 

Nel mio modello, ho:

<select ng-options="permissionLevel.text for permissionLevel in permissionLevels" ng-model="selectedValue"></select> 

seconda della vista, voglio nascondere leggere o scrivere. Quindi nel mio controller, ho un altro flag che indica quale vista è. Prima di NG-opzioni che ho usato, ho avuto un normale selezionare discesa e ha fatto qualcosa di simile:

<select> 
<option>Read Only </option> 
<option ng-show="shouldShowWrite">Write </option> 
</select> 

C'è un modo per fare questo con NG-opzioni? Grazie.

+2

Perché non si manipola l'array '$ s cope.permissionLevels' a seconda della vista? – Horen

+0

Se la matrice viene utilizzata in più di una posizione, la modifica potrebbe avere effetti collaterali indesiderati. – MBielski

risposta

28

Si potrebbe utilizzare un filtro nell'espressione dei ngOptions:

<select ng-model="selectedValue" ng-options="permissionLevel.text for permissionLevel in permissionLevels | filter:shouldShow"></select> 

e definire la funzione di $ portata shouldShow() nel controller:

$scope.shouldShow = function (permissionLevel) { 
    // put your authorization logic here 
    return $scope.permission.canWrite || permissionLevel.value !== 'ROLE_WRITE'; 
} 

Per l'intero esempio vedi: http://plnkr.co/edit/8FkVktDXKGg3MQQawZCH

1

Considerare ngRipetere per quel livello di controllo. Non penso sia possibile con ngOptions.

<select ng-model="selectedValue"> 
    <option ng-repeat="permissionLevel in permissionLevels" value="{{permissionLevel.text}}" ng-show="shouldShowWrite(permissionLevel)"> 
     {{permissionLevel.text}} 
    </option> 
    </select> 
-4

Plaese controllo sottostante Codice, può aiutare a risolvere il problema !!

<select> 
<option>Read Only </option> 
<option ng-show="selectedValue.value=='ROLE_WRITE'">Write </option> 
</select> 
+0

La domanda afferma che questo metodo è già stato utilizzato e qualcosa che usa ng-option è desiderato (se possibile). – MBielski

Problemi correlati