2016-05-26 3 views
0

Versuchen Sie, wie ich könnte, kann ich nicht eine eckige Auswahl mit asynchronen Arbeiten vollständig erhalten. Ich kann es meist arbeiten - aber nicht alles.Angular Wählen Sie mit async in einer Direktive

den Controller vorstellen wie folgt aussieht:

$scope.stuff = {}; 
$scope.stuff.blah = "SOME_KEY"; 
External.list().then(function (data) { 
    $scope.stuff.sourceSystems =data; 
}); 

dann diese Werte zeigt

<select ng-model="stuff.blah"> 
<option ng-repeat="(key, value) in stuff.sourceSystems | orderBy" value="{{key}}">{{key}}</option> 
</select> 

schön aber aus irgendeinem Grund hat eine zusätzliche, leere Wahl am Anfang:

<select ng-model="stuff.blah" ng-options="key for (key, value) in stuff.sourceSystems | orderBy"></select> 

aber - in keinem Fall ist mein vorhandener Wert, den ich in SOME_KEY einstelle - ausgewählt. Im ersten Fall wird der erste Wert in der Liste ausgewählt - im zweiten Fall wird ein leerer Wert ausgewählt. In beiden Fällen ist der zugrunde liegende gebundene Wert SOME_KEY. JEDOCH - sobald ich den ausgewählten Wert tatsächlich ändere, indem ich ihn ablege, ändert sich der gebundene Wert (blah) korrekt.

Dies ist in einer Direktive mit bindToController auf True festgelegt.

Was mache ich falsch?

+0

das ist, was ich in meinem zweiten Beispiel tun - eigentlich - Ich habe gerade einen Workaround gefunden - wenn ich ng-Optionen verwende und im Promise-Handler an das volle Objekt binde - also $ scope.stuff.blah = data ["SOME_KEY"] funktioniert es - aber es scheint ein bisschen wie ein Hack :( –

+0

Sind Sie sicher, dass die Antwort in 'data' keinen leeren Schlüssel hat? Wenn Sie Ihre Antwort aus der Liste veröffentlichen können, ist es einfacher für uns, diese zu debuggen. –

Antwort

1

$ scope.stuff.blah < - hat String key

, in ng-repeat wiederholter Wert ist Object (inklusive Winkel Hashkey)

try this, and read ng-options 

<select ng-model="stuff.blah" ng-options="system.key as system.key for system in stuff.sourceSystems | orderBy"> 
</select> 
+0

hat das versucht - aber es hat nicht funktioniert - hat nichts in der Liste. Hinweis - sourceSystems ist ärgerlich, da der Schlüssel nirgendwo in den Daten existiert - es ist buchstäblich eine Hashtabelle, in der das "Schlüssel" -Element nur im Schlüssel der Tabelle existiert - nicht in irgendeinem der Elemente in der Tabelle –