2016-05-26 27 views
0

私は可能性として、非同期で完全に動作する角度選択を取得できません。私はそれを得ることができますほとんどすべて働いていません。ディレクティブで非同期の角度選択

コントローラがどのように見える想像:

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

、これは何らかの理由でうまく

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

が、この値を表示するには、開始時に余分な空白の選択肢があります。

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

しかし、いずれにせよ、私がSOME_KEYに設定した既存の値は選択されていません。最初のケースでは、リストの最初の値が選択されます。後者の場合は、空白の値が選択されます。どちらの場合も、基になるバウンド値はSOME_KEYです。しかし、私が実際に選択した値を変更すると、それを落とすことによって、バウンド値(blah)が正しく変更されます。

これは、bindToControllerがtrueに設定されているディレクティブにあります。

私は間違っていますか?

+0

で繰り返しました - 実際に - 私はちょうど回避策を見つけました - もしng-optionsを使って約束のハンドラが完全なオブジェクトにバインドすると、$ scope.stuff.blah = data ["SOME_KEY"]は動いていますが、ちょっとハックしたようです。 –

+0

あなたは 'data'のレスポンスに空のキーがないことを確信していますか?リストからレスポンスを投稿できれば、これをデバッグするのが簡単になります。 –

答えて

1

$ scope.stuff.blah < - 文字列のキー

は、NG-繰り返しで、値が私は私の第二の例では何をすべきかのオブジェクト(角度ハッシュキーを含む)

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

はそれを試みましたが、うまくいきませんでしたが、リストには何も見つかりませんでした。注 - sourceSystemsは、キーがデータ内のどこにも存在しないという点で厄介です。文字通りハッシュテーブルで、「キー」項目は表のキーにのみ存在し、表内の項目​​には存在しません –

関連する問題