在PageMod Firefox中获取Angular Scope

时间:2015-12-22 06:53:18

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

我正在使用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?有人可以指出我的错误吗?我很感激有关此事的任何帮助

1 个答案:

答案 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/ - 它使用来自文件,注入器,范围,清理和其他一些东西的直接驱动。