1.2.14から1.4.8への移行時にこれが発生しました。これは1.2.14で正常に動作しますが、無限の$ digest()のループが1.4.8に入ります。この問題を示すFiddleがあります。
:私のオプションは、このようなオブジェクト、ある<select ng-model="selectedId" ng-options="opt.id as opt.label for opt in getOptions()">
:フィドルは、私はこのようになりますselect
要素を持っているこの記事より見て多くの方が簡単ですが、SO私はコード
などが行っています
ngOptionsディレクティブを指定するオプションの配列は条件によって異なります。時々私はただそれに$scope.options
を与えたいが、時には別のオプションを入れたい。今
$scope.getOptions = function() {
if ($scope.showThirdOption)
return [{ id: 3, label: 'three' }].concat($scope.options);
else
return $scope.options;
};
私はプログラム的に3に私のモデルを設定した場合、:
...
$scope.selectedId = 3;
...
...角度は、そのオプションが存在しないにもかかわらず、動揺することはありません。 <option>
ノードを<select>
要素に追加すると、<option value="?" selected="selected"></option>
のドロップダウンリストで選択した値が空白になります。
しかし、私は私の状態s.tを設定します。私GETOPTIONS()の追加オプションリターン:
...
$scope.selectedId = 3;
$scope.showThirdOption = true;
...
...私は無限$ダイジェスト()ループを取得します。
このような問題を回避する良い方法はありますか? Angular(これは技術的には回帰)のバグだと思いますか、これはちょうど... ngOptionsを使用する方法ではありませんか?
~~~ Again, I have a nice Fiddle for you to play around with!! ~~~
ここにあなたのオプションではなく、オブジェクトの値をしている場合、この問題は発生しないことを示す例です:[**のhttp://jsfiddle.net/x15jccmj/3**](のhttp:/ /jsfiddle.net/x15jccmj/3/)。 –