范围问题 - 从外部函数调用内部 dojo 函数

Scoping issue - calling an internal dojo function from external function

我有一个功能超出了 dojo 功能的要求部分。

此函数需要调用驻留在 dojo require 块中的函数。

如何从驻留在 dojo 需求代码块之外的函数调用需求代码块内的函数?

也许更多的应用程序流程将证明需要

这是一个 hacky 解决方案,如果可能的话,您真的应该想办法重新排列您的模块,但这至少应该有效:

var inside = null;

function outside () {
  try { inside(); }
  catch (err) { /* log error or throw away, whatever */ }
}

require(['dojo/_base/declare', ..., 'your/module/function'], function (declare, ..., myModuleFunction) {
  inside = myModuleFunction;
  outside();
});

只是 require 包含函数的模块(在示例中命名为 "your/module/function"myModuleFunction),将其存储在变量 outside 并在已定义 outside 的函数中调用它。我添加了一个 try-catch 块,因为这是一个很好的措施,可以防止您的代码在您过早调用 outside 时崩溃。

如果 dojo require 块中的 函数不是模块,则几乎相同:

var inside = null;

function outside () {
  try { inside(); }
  catch (err) { /* log error or throw away, whatever */ }
}

require(['dojo/_base/declare'], function (declare) {
  inside = function () { console.log('Inside the require block'); };
  outside();
});

除了你不必 require 它。

谈论黑客...这是我为获得所需结果所做的工作。

我在窗体上创建了一个隐藏按钮,绑定了点击事件以触发该功能。

收到并处理消息后,我触发了按钮单击事件 - 中提琴!!

感谢大家的帮助。