javascript - 在 PageMod Firefox 中获取 Angular 范围

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

我正在使用 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/

相关文章:

javascript - 在 Java 上编写 WebSocket 服务器。 Windows 7 64 位上的问题

css - 在浏览器调整大小之前,AngularDart NgComponent 不存在

javascript - Pretty date js 无法在 Firefox 上运行

javascript - 如何在 Chrome 扩展的内容脚本中导入 ES6 模块

php - 使用 $.load() 发送 'GET' 数据

javascript - 如何取消或重置特定的表单值?

angularjs - Azure AD 身份验证错误 : User Cancelled the flow

javascript - 如何将所选下拉值传递给 ng-repeat orderby

javascript - Firefox addeventlistener ('mouseover' ,...) 在 <button> 上不起作用

css - 有没有办法了解为什么 Firefox 选择 CSS 选择器而不是其他选择器?