有没有办法从HTML文件(在Firefox插件main.js文件中)加载AngularJS?

时间:2012-09-13 16:03:23

标签: firefox-addon angularjs firefox-addon-sdk

我正在使用AngularJS开发Firefox扩展,我正在尝试使用main.js文件中的一些AngularJS服务。我使用require()包含相关模块,并使用angular.bootstrap()初始化模块。

但是,我总是收到以下错误:

  

参考错误:窗口未定义

我能做些什么吗?

4 个答案:

答案 0 :(得分:1)

AngularJS并不是真正意味着这种环境 - 它是一个MVC框架,在你的情况下,V(视图)缺失。您没有说出要使用AngularJS的内容,但您可能需要考虑在内容脚本而不是main.js中使用它。

也就是说,AngularJS经常使用window作为访问全局对象的手段。这很容易修复,AngularJS源代码的倒数第二行说:

})(window, document);

这应该改为:

})(this, document);

这至少会允许进行不需要视图的功能。当然,您仍然需要删除最后一行(尝试将样式表插入文档的那一行)并导出angular变量:

exports.angular = angular;

答案 1 :(得分:1)

没有太多细节,所以我不确定这个建议是否适合你想做的事情。如果您想使用一些需要DOM并且不想向用户显示文档的JS库,请考虑使用page-worker模块:

https://addons.mozilla.org/en-US/developers/docs/sdk/latest/packages/addon-kit/page-worker.html

您需要在worker和main.js之间设置事件驱动的通信,就像SDK代码使用的任何其他内容文档一样:

https://addons.mozilla.org/en-US/developers/docs/sdk/latest/dev-guide/guides/events.html

答案 2 :(得分:0)

可能是你必须得到窗口对象 var window = require("window-utils").activeBrowserWindow;

答案 3 :(得分:0)

您尝试更新的视图是什么?您应该能够为angular.bootstrap提供一些非根元素以开始编译。 http://docs.angularjs.org/api/angular.bootstrap

如果您使用的某些服务依赖于窗口,您可能还需要提供自己的调整$window服务。 http://docs.angularjs.org/api/ng.$window