代码之家  ›  专栏  ›  技术社区  ›  pithhelmet

作用域问题-从外部函数调用内部dojo函数

  •  0
  • pithhelmet  · 技术社区  · 6 年前

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

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

    如何从dojo require块之外的函数调用require代码块内的函数?

    也许再多一点应用程序流就可以证明这一需要

    • 子窗口接收消息
    • 外部函数解析消息并确定映射
    • 子窗口函数需要调用一个 在dojo的require代码块中执行实际的ESRI相关任务
    2 回复  |  直到 6 年前
        1
  •  0
  •   Davi    6 年前

    这是一个骇人的解决方案,如果可能的话,你应该想办法重新排列你的模块,但这至少应该是可行的:

    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 在本例中),将其存储在变量中 并在已定义的函数中调用它 已经。我加了一个 try-catch 阻止,因为这是一个很好的措施,可以防止调用时代码崩溃 outside 太早了。

    如果函数 在…内

    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();
    });
    

    除了你不必 信息技术

        2
  •  0
  •   pithhelmet    6 年前

    谈论一个黑客。。。以下是我为获得所需结果所做的工作。

    我在表单上创建了一个隐藏按钮,绑定了click事件以触发函数。

    当消息被接收和处理后,我启动了按钮点击事件-和中提琴!!