【发布时间】:2012-05-16 11:05:15
【问题描述】:
我正在使用 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 之外更新服务吗?控制器可以监听来自服务的事件吗?在一个experiment (click for fiddle) 中,我似乎可以访问一项服务,但更新服务的数据不会反映在视图中(在示例中,<option> 应添加到<select>)。
谢谢!
【问题讨论】:
-
请注意,在上面的 jsfiddle 中,注入器是在没有使用
var injector = angular.injector(['ng', 'MyApp']);定位应用程序内的元素的情况下获得的。这样做会给你一个全新的上下文和一个重复的myService。这意味着您最终会得到服务和模型的两个实例,并且会将数据添加到错误的位置。您应该改为使用angular.element('#ng-app').injector(['ng', 'MyApp'])定位应用程序中的元素。此时您可以使用 $apply 来包装模型更改。
标签: javascript actionscript-3 externalinterface angularjs