首页 > 解决方案 > 范围问题 - 从外部函数调用内部 dojo 函数

问题描述

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

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

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

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

标签: javascriptdojoesri-javascript-api

解决方案


这是一个 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


推荐阅读