Angularjs wählt beim Remote-Laden die Standardeinstellung aus
-
21-12-2019 - |
Frage
Ich versuche, mit Angular einen Standardwert in einem SELECT-Element zu haben, aber es scheint nicht zu funktionieren.Egal was ich mache, es wählt immer ein leeres Standardelement aus, wenn die Daten remote in den Controller geladen werden
Hier ist mein HTML:
<select
ng-options="Domain.Name for Domain in Domains"
ng-model="CurrentDomain"
ng-init="CurrentDomain = Domains[0]"
></select>
Hier ist der relevante Controller-Code:
$scope.Domains = $resource('api/domain').query();
$scope.CurrentDomain = $scope.Domains[0];
Mir ist klar, dass diese Frage schon oft gestellt wurde und ich habe alle anderen Fragen gelesen, aber keiner der Vorschläge scheint zu funktionieren.Wenn jemand weitere Vorschläge hat, lassen Sie es mich bitte wissen.
Danke.
Lösung
Das Problem ist das Versprechen. $scope.Domains
ist versprochen und muss noch gelöst werden.Also, $scope.Domains[0]
ist zu diesem Zeitpunkt undefiniert.
Der richtige Code lautet also wie folgt
var Domains = $resource('api/domain').query(function(){
$scope.Domains = Domains;
$scope.CurrentDomain = Domains[0];
});
Plunkr-Version - http://plnkr.co/edit/ppjSWDKT4lHWvEcY0PMC?p=preview
Beziehen auf https://github.com/angular/angular.js/issues/4298, ng-init
ist nicht mehr in der Lage, Versprechen einzulösen.