2015-09-23 21 views
5

Nell'app AngularJS 1.3 ho un modulo su cui ottengo il modello ei possibili valori per i controlli selezionati in modo asincrono dal back-end. Quando ottengo il valore del modello prima dei valori utilizzati in ng-options, nessuna opzione viene selezionata nel controllo di selezione. Sono riuscito a riprodurre questo comportamento:Valore iniziale della selezione non impostato in AngularJS

var app = angular.module('plunker', []); 

app.controller('MainCtrl', function($scope, $timeout) { 
    $scope.model = { value: 101 }; 

    $timeout(function() { 
    $scope.model.values = [100, 101, 102, 103]; 
    }, 1000); 

}); 

vista:

Options: <select ng-model="model.value" 
     ng-options="v for v in model.values"> 
     <option value="">Select some...</option> 
    </select> 

Dopo timeout modello ha il suo antico valore di 101, ma nessuna opzione è selezionata. Attualmente trovo una soluzione alternativa utilizzando ng-if="model.values" su select, ma ritengo che ci dovrebbe essere un modo migliore per farlo.

Qualcuno potrebbe spiegare perché l'opzione non è selezionata?

Plunkr: http://plnkr.co/edit/4opZRJzdDfJhSNJx8RMF

EDIT: ho aperto Plunkr in Firefox e ho iniziato a lavorare, poi ho di nuovo a Chrome e non ha funzionato assomiglia problema crossbrowser ...

+0

Questo sembra essere specifico per angolare 1.3; Il codice funziona correttamente in angular 1.2 e nell'attuale versione 1.4.6 – Claies

+0

non sono sicuro, ma sospetto che questo debba essere chiuso come non riproducibile poiché il problema dimostrato riguarda solo versioni specifiche del framework e non è presente nell'attuale versione stabile. – Claies

risposta

0

Sono d'accordo con @PrimosK sul problema.

La soluzione è aggiungere inseguimento:

ng-options="v for v in model.values track by v" 

esempio in Plunker

1

Ecco come si presenta è un regression in AngularJs 1.3.x.

L'esempio fornito funziona correttamente in AngularJs 1.2.xe 1.4.x.

+0

Prego. – PrimosK

+0

L'aggiornamento del progetto ad AngularJs 1.4 risolve questo problema (ieri ho fatto uno stupido errore test su Plunker, lo controllo di nuovo e funziona) – csharpfolk

Problemi correlati