AngularJS 与遗留代码的接口
由于需要与 Angular 框架交互的外部回调,将 AngularJS 与遗留应用程序集成可能会带来挑战。为了解决这个问题,AngularJS 提供了几种互操作性机制。
从外部代码访问 Angular 服务
一种方法是创建 AngularJS 服务并公开 setter 方法来更新其数据。然后,遗留代码可以通过 AngularJS 的ExternalInterface 对象调用这些方法。在服务中,setter 函数应使用 Angular 事件总线触发事件。
从控制器中的服务捕获事件
控制器可以订阅服务发出的事件。为此,首先在服务中定义一个事件名称。在控制器中,使用 $scope.$on() 方法注册一个事件侦听器,该侦听器将捕获具有相关名称的事件并执行任何必要的 UI 更新。
限制
需要注意的是,从 AngularJS 外部直接更新服务数据可能并不总是会触发视图中的更新。这是因为 AngularJS 使用单向数据绑定机制。为了确保更新反映在视图中,作用域上的任何数据更改或方法调用都应包装在 AngularJS 的 $apply() 函数中。
示例
以下代码片段演示了如何在 AngularJS 中设置服务并从旧版 AS3 访问它应用程序:
angular.module('myApp').service('myService', function () {
this.data = [];
this.setData = function (data) {
this.data.push(data);
this.$emit('dataUpdated', data);
};
});
// in legacy AS3 code
ExternalInterface.call("myService.setData", data);
在 AngularJS 控制器中:
$scope.$on('dataUpdated', function (event, data) {
// update the UI with the received data
});
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3