小编典典

从旧版代码调用AngularJS

javascript

我正在使用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>)。

谢谢!


阅读 272

收藏
2020-04-25

共1个答案

小编典典

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

对于任何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.
});
2020-04-25