Firefox扩展实现AngularJS

时间:2014-03-27 13:27:48

标签: javascript node.js angularjs firefox-addon firefox-addon-sdk

我正在尝试在我的角度服务中使用“self.port.emit”来从UI发送我的附加组件结果。问题是我没有收到任何错误,所以我不确定为什么面板没有检测到self.port。

以下是我当前的文件夹结构:

add-on/
    lib/
        toolbar.js
    data/ 
        angularApp/
            app/ 
            scripts/
                controllers/
                    groupCtrl.js
                services/
                    groupservice.js

在我的gorupservice.js中,我有以下代码:

angular.module('angularApp').service('groupservice'), function() {
    this.addGroup = function(name) {
        self.port.emit("newGroupName", name);
    }
}

groupservice由groupCtrl.js调用。正在调用函数addGroup。在toolbar.js中,我有一个“self.port.on”监听“newGroupName”。在toolbar.js中,我有

function createSettingsPanel() {
     var settingsPanel = require("sdk/panel").Panel({
         ...
         contentScriptFile: [data.url("angularApp/app/bower_components/angular/angular.js"),  
         data.url("angularApp/app/scripts/app.js"),
         data.url("angularApp/app/scripts/controllers/groupservice.js")],
     });

     settingsPanel.port.on("newGroupName", function() {
         console.log("MADE IT"); //NOT GETTING HERE!
     }); 
}

如果有人对Firefox附加组件中的angular.js有任何使用经验,将非常感谢帮助。

2 个答案:

答案 0 :(得分:1)

在内容脚本(角度应用程序)中使用addon.port.emit而不是self.port.emit,它可以正常工作。

答案 1 :(得分:0)

这是一个黑暗中的镜头,但应该是这个代码:

angular.module('angularApp').service('groupservice', function() {
    this.addGroup = function(name) {
        self.port.on("newGroupName", name);
    }
}

angular.module('angularApp').factory('groupService', function() {
    var groupService;

    groupService.addGroup = function(name) {
        self.port.emit("newGroupName", name);
    }

    return groupService;
}

你正在寻找单身人士吗?

有些问题:“自我”是一个全局变量吗?注入服务时是否定义了self.port