レガシーコードからAngularJSを呼び出す 質問する

レガシーコードからAngularJSを呼び出す 質問する

私は 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.
});

おすすめ記事