0

我有一个在 dojo 函数的 require 部分之外的函数。

此函数需要调用位于 dojo 要求块中的函数。

如何从位于 dojo 要求块之外的函数调用要求代码块中的函数?

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

  • 主窗口应用程序产生一个子窗口
  • 主窗口向具有将接收消息的全局函数的子窗口发送消息
  • 子窗口接收消息
  • 外部函数解析消息并确定映射需要更新(产生的子窗口是映射窗口,在require部分加载了很多ESRI模块)
  • 子窗口函数需要调用 dojo 的 require 代码块中的函数来执行实际的 ESRI 相关任务
4

2 回答 2

0

这是一个 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包含函数的模块(在示例中命名),将其存储在 require 之外的变量"your/module/function",并在已经在外部定义的函数中调用它。我添加了一个块,因为它是一个很好的衡量标准,可以防止你的代码在你过早调用时崩溃。myModuleFunctiontry-catchoutside

如果 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

于 2018-11-12T16:54:15.897 回答
0

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

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

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

感谢大家的帮助。

于 2018-11-13T23:56:41.967 回答