从不是main.js的文件访问小部件实例?

时间:2012-10-05 15:00:50

标签: firefox firefox-addon firefox-addon-sdk

我的Firefox附加组件中有一个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);

我想要做的是从contentURL文件中更改工具栏的disabler。但是,我无法访问该文件中的toolbar变量。

如何从toolbar访问disabler

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

1 个答案:

答案 0 :(得分:2)

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

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

disabler.js

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

...

doSomething(toolbar);