2013-10-30 7 views
5

Attualmente sto bloccato con un problema che sembra semplice:AngularJS: ottengono selezionare l'etichetta senza modificare ng-modello

Controller:

$scope.fruits = [{ 
    name: 'AP', 
    label: 'Apple' 
    }, { 
    name: 'BA', 
    label: 'Bananas' 
    }]; 

codice HTML:

<select 
    ng-model="meal.fruit" 
    ng-options="fruit.name as fruit.label for fruit in fruits"> 
</select> 

<p>Fruit : {{meal.fruit}}</p> 

problema è , visualizza

Fruit : BA 

Invece di

Fruit : Bananas 

non riesco a modificare ng-opzione per "frutto come fruit.label" perché ho bisogno il mio modello "meal.fruit" essere "AP" o "BA" (perché si tratta di un java enum deserialize di Jackson, e richiede il valore Enum).

JSFiddle

In sintesi, ho bisogno di essere meal.fruit "BA" e voglio anche essere in grado di visualizzare il valore selezionato "Bananas" da qualche altra parte.

Cosa posso fare?

EDIT:

La soluzione che ha funzionato per me è stato trovato da Maxim Shoustin, (molte grazie!):

ho modificato il mio codice per avere il seguente:

http://jsfiddle.net/2qfSB/77/

E quindi ho modificato il metodo di invio per aggiungere quanto segue:

$scope.meal.fruit = $scope.meal.fruit.name; 

risposta

3

Basta cambiare ng-options:

ng-options="fruit.label as fruit.label for fruit in fruits"> 

fisso Demo: Fiddle

come nota a margine

È possibile impostare di default 1 ° elemento per evitare combo vuota utilizzando ng-init:

<select 
     ng-model="meal.fruit" 
     ng-options="fruit.label as fruit.label for fruit in fruits" 
     ng-init="meal.fruit = fruits[0].label" 
    > 

Demo: Fiddle

+0

questo non risolve il problema, perché ora meal.fruit contiene "Bananas" quando presento la mia forma. Ho bisogno di contenere "BA" per essere deserializzato da Jackson :( – Baptiste

+0

dal tuo esempio '

Frutta: {{pasto.frutta}}

'. E volevi: 'Frutta: Banane'. Così ti ho perso, puoi dare ulteriori informazioni? –

+0

Lo so, questa parte ora è buona, ma ho bisogno di meal.fruit per essere "BA" per essere deserializzata da Jackson – Baptiste

Problemi correlati