我正在使用FF 44.0a2 Developer Edition和Firefox Addon SDK制作Firefox插件。我正在使用pageMod内容脚本将AngularJS应用程序注入页面DOM。稍后在文件中,我试图获取AngularJS App范围对象,以便我可以使用它来进行一些API调用。这是我试图做的方式
var scope = angular.element(document.getElementById("ngApp")).scope();
console.log(scope);
如果我在浏览器控制台中键入此内容,它会为我提供完整的范围,但是当我在pageMod内容脚本中执行此操作时,即使应用程序被注入,也会返回null
?有人可以指出我的错误吗?我很感激有关此事的任何帮助
答案 0 :(得分:1)
你不应该在ngApp
上得到它,你应该从附有控制器的元素中得到它。
我在firefox插件中使用了角度很多,我现在切换到React因为它的性能更高。
但这是我如何获得并访问范围,注入器等:
以下是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插件 - https://github.com/Noitidart/MailtoWebmails/ - 它使用来自文件,注入器,范围,清理和其他一些东西的直接驱动。