AngularJS とレガシーコードを相互運用する方法

Patricia Arquette
リリース: 2024-10-19 11:10:02
オリジナル
446 人が閲覧しました

How to Interoperate AngularJS with Legacy Code

AngularJS とレガシー コードのインターフェース

AngularJS とレガシー アプリケーションの統合では、Angular フレームワークと対話する必要がある外部コールバックにより課題が発生する可能性があります。これに対処するために、AngularJS は相互運用性のためのいくつかのメカニズムを提供します。

外部コードから Angular サービスにアクセスする

1 つのアプローチは、AngularJS サービスを作成し、そのサービスを更新するセッター メソッドを公開することです。データ。レガシー コードは、AngularJS の ExternalInterface オブジェクトを通じてこれらのメソッドを呼び出すことができます。サービス内では、setter 関数は Angular イベント バスを使用してイベントをトリガーする必要があります。

コントローラーのサービスからのイベントのキャプチャ

コントローラーは、サービスによって発行されたイベントをサブスクライブできます。これを行うには、まずサービスでイベント名を定義します。コントローラーで $scope.$on() メソッドを使用して、関連する名前でイベントをキャッチし、必要な UI 更新を実行するイベント リスナーを登録します。

制限事項

AngularJS の外部からサービスのデータを直接更新しても、ビュー内の更新が常にトリガーされるわけではないことに注意することが重要です。これは、AngularJS が一方向のデータ バインディング メカニズムを使用しているためです。更新がビューに確実に反映されるようにするには、スコープ上のすべてのデータ変更またはメソッド呼び出しを AngularJS の $apply() 関数でラップする必要があります。

以下コード スニペットは、AngularJS でサービスを設定し、従来の AS3 アプリケーションからアクセスする方法を示しています:

<code class="javascript">angular.module('myApp').service('myService', function () {
  this.data = [];

  this.setData = function (data) {
    this.data.push(data);
    this.$emit('dataUpdated', data);
  };
});</code>
ログイン後にコピー
<code class="as3">// in legacy AS3 code
ExternalInterface.call("myService.setData", data);</code>
ログイン後にコピー

AngularJS コントローラー内:

<code class="javascript">$scope.$on('dataUpdated', function (event, data) {
  // update the UI with the received data
});</code>
ログイン後にコピー

以上がAngularJS とレガシーコードを相互運用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート