2015-09-23 14 views
5

AngularJS 1.3 appでは、選択コントロールのモデルと可能な値をバックエンドから非同期的に取得するフォームがあります。 ng-optionsで使用される値の前にモデル値を取得すると、選択コントロールでオプションが選択されません。選択の初期値は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); 

}); 

ビュー:私はこの現象を再現するために管理

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

タイムアウトモデルの後は、その古い値101を持っていますが、何のオプションが選択されていません。 現在、私は選択にng-if="model.values"を使用して回避策を見つけるが、それを行うためのより良い方法があるはずだと感じている。

誰かがなぜオプションが選択されていないのか説明できますか?

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

編集:私はFirefoxでPlunkrを開いて、私は戻ってChromeに、その後、私の仕事を始め、それはそれはこのようになります

+0

、これは1.3角度に特異的であるように見えます。このコードは1.2の角と現在のバージョン1.4.6で正しく動作します。 – Claies

+0

私は確信していますが、この問題は特定のフレームワークのバージョンにのみ影響し、現行の安定版には存在しないため、これを再現できないと判断します。 – Claies

答えて

0

@PrimosKの問題について私は同意します。

溶液は、トラッキングを追加することである。

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

Plunker

1

... crossbrowserの問題のように見えるが動作しませんでしたAngularJs 1.3.xではregressionです。

あなたが提供した例は、AngularJs 1.2.xおよび1.4.xで正常に動作します。

+0

あなたは大歓迎です。 – PrimosK

+0

AngularJs 1.4にプロジェクトをアップデートすると、この問題は解決しました(昨日、私はPlunkerで愚かなテストをしました。私はこれをもう一度チェックして動作します) – csharpfolk

関連する問題