2012-10-05 20 views
0

我在我的Firefox插件中有一个main.js文件,它需要在另一个文件中定义的类,然后添加一个工具栏项。从不是main.js的文件访问小部件实例?

// lib/main.js 

var widgets = require('widgets'), 
    disabler = require('./disabler'); 

var toolbarOptions = { 
    id: 'the-id', 
    label: 'The Widget', 
    contentURL: self.data.url('icon-16.png') 
}; 

// Add the toolbar item to the browser. Because this is a CommonJS environment, 
// this reference to the toolbar is locally scoped. 
var toolbar = widgets.Widget(toolbarOptions); 

我想这样做是工具栏的contentURLdisabler更改文件中。但是,我无法访问该文件中的toolbar变量。

如何从disabler访问toolbar

顺便说一下,我使用的是附加SDK的版本1.10。

回答

2

每个模块都在其自己的上下文中运行。如果你想让另一个模块拥有这个变量,那么你应该明确地给这个变量赋值。例如,在main.js

var toolbar = widgets.Widget(...); 
disabler.setToolbar(toolbar); 

而且在disabler.js

var toolbar = null; 
exports.setToolbar = function(tb) 
{ 
    toolbar = tb; 
}; 

... 

doSomething(toolbar);