我正在使用 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>
谢谢!
从 Angular 外部到 Angular 的互操作与调试 Angular 应用程序或与第三方库集成相同。
对于任何 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. });