3

私のアプリには、すべて同じオプションを持ついくつかのグループ化された選択要素があります。1つの選択が変更されると、他の選択をチェックして、新しく選択されたオプションが他の選択のいずれかですでに選択されているかどうかを確認します。すでに選択されている場合は、他の選択でまだ選択されていないオプションを動的に選択するロジックがいくつかあります。このロジックにより、以前と同じオプションが選択される場合があります。これが発生すると、select要素が更新されず、モデルと同期しなくなります。

これをここに示す非常に単純なjsFiddleを作成しました:http://jsfiddle.net/wvLHw/

私が見つけた1つの可能な回避策がありますが、私のアプリでそれがどれほど可能かわかりません。これを正しく機能させるためのより良い方法はありますか?角度が私のモデルに基づいて選択要素を更新しない理由はありますか?

4

2 に答える 2

1

これは、 1.0.3で修正されたバージョン1.0.2のangularjsの問題でした。

これでうまくいくはずです

$scope.myOnChange = function() {
    //more logic here, but ends up back at c
    $scope.foo = "c";
}
于 2013-03-15T22:42:26.100 に答える
0

あなたの質問を正しく解釈しているかどうかはわかりませんが、いくつかの選択があり、それらの選択の1つの値が変更されたときに、(他の選択の値に基づいて)いくつかのロジックを実行したいと思います。最終的に設定する最終値を計算します。

上記が$scopeを使用するよりも正しい場合、$watchがユースケースをカバーします。例として、2つの異なるモデル値(fooとbar)にバインドされた2つの選択があると仮定します。誰かがfooの値を変更し、それがbarに選択された値と等しい場合は、fooを別のものに強制します。このようなシナリオでは、このコードでうまくいきます。

$scope.$watch('foo', function(fooValue){
    if (fooValue === $scope.bar){
        $scope.foo = 'a';
    }
});

完全なjsFiddleは次のとおりです。http://jsfiddle.net/pkozlowski_opensource/vqjKq/3/

私はあなたのユースケースを正しく解釈していることを願っていますが、そうでない場合は、この回答にコメントしてください。喜んで最新情報を提供します。

于 2012-09-06T17:29:15.587 に答える