我使用angular来构建与旧的Flex应用程序交互的HTML控件。 Flex应用程序的所有回调都必须附加到DOM窗口。
例如(在AS3中)
ExternalInterface.call("save",data);
将会通知
window.save = function(data){ // want to update a service // or dispatch an event here... }
在JS调整大小函数内,我想调度一个控制器可以听到的事件。似乎创建一个服务是要走的路。你可以从Angular外部更新服务吗?控制器可以监听服务中的事件吗?在一个experiment (click for fiddle)中,我似乎可以访问服务,但更新服务的数据不会反映在视图中(在示例中应该添加到)。
谢谢!
从角度到角度的互操作与调试角度应用或与第三方库集成相同。
对于任何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. });