Heim  >  Artikel  >  Web-Frontend  >  So interagieren Sie AngularJS mit Legacy-Code

So interagieren Sie AngularJS mit Legacy-Code

Patricia Arquette
Patricia ArquetteOriginal
2024-10-19 11:10:02447Durchsuche

How to Interoperate AngularJS with Legacy Code

Anbindung von AngularJS mit Legacy-Code

Die Integration von AngularJS in Legacy-Anwendungen kann aufgrund der externen Rückrufe, die mit dem Angular-Framework interagieren müssen, eine Herausforderung darstellen . Um dies zu beheben, bietet AngularJS mehrere Mechanismen für die Interoperabilität.

Zugriff auf Angular-Dienste über externen Code

Ein Ansatz besteht darin, einen AngularJS-Dienst zu erstellen und Setter-Methoden bereitzustellen, um ihn zu aktualisieren Daten. Der Legacy-Code kann diese Methoden dann über das ExternalInterface-Objekt von AngularJS aufrufen. Innerhalb des Dienstes sollte die Setter-Funktion ein Ereignis über den Angular-Ereignisbus auslösen.

Erfassen von Ereignissen von Diensten in Controllern

Controller können von Diensten ausgegebene Ereignisse abonnieren. Definieren Sie dazu zunächst einen Event-Namen im Service. Verwenden Sie im Controller die Methode $scope.$on(), um einen Ereignis-Listener zu registrieren, der Ereignisse mit dem entsprechenden Namen abfängt und alle erforderlichen UI-Updates durchführt.

Einschränkungen

Es ist wichtig zu beachten, dass direkte Aktualisierungen der Dienstdaten von außerhalb von AngularJS möglicherweise nicht immer Aktualisierungen in der Ansicht auslösen. Dies liegt daran, dass AngularJS einen unidirektionalen Datenbindungsmechanismus verwendet. Um sicherzustellen, dass Aktualisierungen in der Ansicht widergespiegelt werden, sollten alle Datenänderungen oder Methodenaufrufe im Bereich in die Funktion $apply() von AngularJS eingeschlossen werden.

Beispiel

Das Folgende Codeausschnitt zeigt, wie man einen Dienst in AngularJS einrichtet und von einer älteren AS3-Anwendung aus darauf zugreift:

<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>

Im AngularJS-Controller:

<code class="javascript">$scope.$on('dataUpdated', function (event, data) {
  // update the UI with the received data
});</code>

Das obige ist der detaillierte Inhalt vonSo interagieren Sie AngularJS mit Legacy-Code. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn