我正在使用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>)。
<option>
<select>
谢谢!
从角度到角度的互操作与调试角度应用程序或与第三方库集成相同。
对于任何DOM元素,您都可以这样做:
angular.element(domElement).scope()
angular.element(domElement).injector()
angular.element(domElement).controller()
ng-controller
从喷油器中,您可以掌握角度应用中的所有服务。类似地,您可以从作用域调用已发布给它的任何方法。
请记住,对角度模型的任何更改或对范围的任何方法调用都必须$apply()像下面这样包装:
$apply()
$scope.$apply(function(){ // perform any model changes or method invocations here on angular app. });