javascript - 从遗留代码调用 AngularJS

标签 javascript actionscript-3 externalinterface 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 调整大小函数中调度一个 Controller 可以听到的事件。似乎创建服务是要走的路。你能从 AngularJS 之外更新服务吗? Controller 可以监听来自服务的事件吗?合一experiment (click for fiddle)我似乎可以访问服务,但更新服务的数据不会反射(reflect)在 View 中(在示例中,<option> 应添加到 <select>)。

谢谢!

最佳答案

从 Angular 外部到 Angular 的互操作与调试 Angular 应用程序或与第三方库集成相同。

对于任何 DOM 元素,您都可以这样做:

  • angular.element(domElement).scope() 获取元素的当前作用域
  • angular.element(domElement).injector() 获取当前应用注入(inject)器
  • angular.element(domElement).controller() 获取 ng-controller 实例。

通过注入(inject)器,您可以获取 Angular 应用程序中的任何服务。同样,您可以从作用域调用任何已发布到它的方法。

请记住,对 Angular 模型的任何更改或作用域上的任何方法调用都需要像这样包装在 $apply() 中:

$scope.$apply(function(){
  // perform any model changes or method invocations here on angular app.
});

关于javascript - 从遗留代码调用 AngularJS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10490570/

相关文章:

javascript - 如何在nodejs中获取Mac OS计算机名称

javascript - 如何使用Selector访问DOM元素?

flash - 在 AS3 中获取颜色的变体

没有 SWFObject.js 的 Javascript 到 Flash 通信

Javascript -> Flash 抛出 "Error calling method on NPObject"

jquery - Actionscript 3,JQuery SWF对象插件和ExternalInterface问题

javascript - 将数组插入数组的数组中 Javascript

javascript - Bootstrap 4 Modal 由 ajax 调用打开 - 关闭按钮不起作用

actionscript-3 - 如何在 ActionScript 3 中伪造 AsyncToken 返回

javascript - 我可以将 JS 源用作 Actionscript,反之亦然吗?