我正在尝试在我的角度服务中使用“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有任何使用经验,将非常感谢帮助。
答案 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
?