私はサードパーティのドメインロジックを持つ巨大なjQueryプラグインを持っていました。このプラグインは、browser
というオブジェクトをグローバル名前空間に公開します。角度:スコープモデルの変更に応じて非角度のjavascript変数を更新するにはどうすればよいですか?
私は簡単な角度コントローラを持っています。私は(オブジェクトの平等を使用して、平等を参照しない)、それはbrowser
の変更を$watch()
作られ、それに応じて範囲を更新します。
$scope.$watch(browser, function(newValue, oldValue, scope) { scope.browser = newValue; }, true);
ファインが、今は逆の操作を行う必要があります。私は、ときに、グローバルbrowser
オブジェクトを更新する必要があります$scope.browser
Angularの$digest
ループの途中でモデルが変わります。それ、どうやったら出来るの?
おそらく、私はAngularのダーティチェックループにカスタムフックを作成する必要があります。私はこれが悪いアプローチであり、双方向バインディングの全ポイントがこれらの手動コールバックを回避することであることを理解していますが、より良い解決策を見つけることはできません。
として戻って逆にすることができ、私はそれがになると思うがあなたに役立ちます。http://stackoverflow.com/questions/11873627/angularjs-ng-model-binding-not- jqueryで更新されたときの更新 –
@RameshRajendranありがとう。はい、私は非角度イベントハンドラからスコープの変更は '$ apply()'コールでラップする必要があることを理解しています。しかしこれは別のケースですが、Angularのダーティチェックループのカスタムフックを作成する必要があります。そして、私はこれが悪用と悪いデザインであることを理解しています。これを避けるためにAngularが作成されましたが、とにかくより良いソリューションを見つけることはできません。 –