小编典典

从遗留代码调用 AngularJS

all

我正在使用 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
之外更新服务吗?控制器可以监听来自服务的事件吗?在一个实验中(点击小提琴),我似乎可以访问服务,但更新服务的数据并没有反映在视图中(在示例中<option>应该添加到<select>)。

谢谢!


阅读 76

收藏
2022-08-05

共1个答案

小编典典

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

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

  • angular.element(domElement).scope()获取元素的当前范围
  • angular.element(domElement).injector()获取当前的应用程序注入器
  • angular.element(domElement).controller()获取ng-controller实例。

从注入器中,您可以获取角度应用程序中的任何服务。同样,您可以从范围调用任何已发布到它的方法。

请记住,对角度模型的任何更改或范围上的任何方法调用都需要$apply()像这样包装:

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