我正在使用 FF 44.0a2 Developer Edition 和 Firefox Addon SDK 制作 Firefox 插件。我使用 pageMod 内容脚本将 AngularJS 应用程序注入(inject)到页面 DOM 中。在文件的后面,我试图获取 AngularJS App 范围对象,以便我可以使用它来进行一些 API 调用。这是我尝试做的事情
var scope = angular.element(document.getElementById("ngApp")).scope();
console.log(scope);
如果我在浏览器控制台中输入此内容,它会为我提供完整的范围,但是当我在 pageMod 内容脚本中执行此操作时,即使注入(inject)应用程序,也会返回 null
?有人可以指出我的错误吗?对于此事的任何帮助,我将不胜感激
最佳答案
您不应该在 ngApp
上获取它,而应该从附加了 Controller 的元素中获取它。
我在我的 Firefox 插件中经常使用 Angular,现在我改用 React,因为它的性能更高。
但这是我如何获取和访问作用域、注入(inject)器等:
这是 ngApp:https://github.com/Noitidart/ZooniverseXpert/blob/master/app.xhtml#L15
<html xmlns="http://www.w3.org/1999/xhtml" ng-app="zooniversexpert">
<body ng-controller="BodyController as BC">
这是我得到的范围:https://github.com/Noitidart/ZooniverseXpert/blob/master/resources/scripts/app.js#L46-L47
var gAngBody = angular.element(document.body);
gAngScope = gAngBody.scope();
这是一个 Firefox 插件,更深入地使用 Angular - https://github.com/Noitidart/MailtoWebmails/ - 它使用来自文件、注入(inject)器、作用域、清理和其他一些东西的指令。
关于javascript - 在 PageMod Firefox 中获取 Angular 范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34410036/