私は AngularJS を使用して、従来の Flex アプリケーションと対話する HTML コントロールを構築しています。Flex アプリからのすべてのコールバックは、DOM ウィンドウにアタッチする必要があります。
例えば(AS3の場合)
ExternalInterface.call("save", data);
電話します
window.save = function(data){
// want to update a service
// or dispatch an event here...
}
JSのリサイズ関数から、コントローラーが聞くことができるイベントをディスパッチしたいのですが、サービスを作成するのが最善の方法のようです。AngularJSの外部からサービスを更新できますか?コントローラーはサービスからのイベントをリッスンできますか?1つは実験(クリックして操作)実行したところ、サービスにアクセスできるようですが、サービスのデータを更新してもビューに反映されません (例では、<option>
が に追加される必要があります<select>
)。
ありがとう!
ベストアンサー1
Angular の外部から Angular への相互運用は、Angular アプリケーションのデバッグやサードパーティ ライブラリとの統合と同じです。
どの DOM 要素に対しても、次の操作を実行できます。
angular.element(domElement).scope()
要素の現在のスコープを取得するangular.element(domElement).injector()
現在のアプリインジェクターを取得するangular.element(domElement).controller()
インスタンスを取得しますng-controller
。
インジェクターからは、Angular アプリケーション内の任意のサービスを取得できます。同様に、スコープからは、公開されている任意のメソッドを呼び出すことができます。
Angular モデルへの変更やスコープ上のメソッド呼び出しは、$apply()
次のようにラップする必要があることに注意してください。
$scope.$apply(function(){
// perform any model changes or method invocations here on angular app.
});