从其他 JS 文件访问函数 - DOJO

Accessing Functions From Other JS Files - DOJO

我正在尝试从与我的主 js 脚本和 html 文件位于同一应用程序目录中的另一个 js 文件调用一个函数。我收到一条错误消息,声称引用的函数不存在。我已经以正确的顺序引用了主 html 文件中的两个脚本,但我终究无法弄清楚为什么它无法检测到该功能。我只能假设它与 dojo 如何解析文件有关,并且已经对它的 dojo/domReady 进行了试验!和 dojo/ready 模块,希望强制加载脚本。我觉得这应该比我想象的要简单得多。任何帮助将不胜感激。

html

<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <title>Asset View</title>
        <meta charset="utf-8">
        <link rel="stylesheet" href="http://js.arcgis.com/3.14/dijit/themes/claro/claro.css">
        <link rel="stylesheet" href="http://js.arcgis.com/3.14/esri/css/esri.css">
        <link rel="stylesheet" href= "styles/styles.css">
        <script src="http://js.arcgis.com/3.14/"></script>
        <script src="scripts/requests-js.js"></script>
        <script src="scripts/layout-js.js"></script>
        <script src="scripts/xmain-js.js"></script>
    </head>
    <body class = "claro">

    </body>
</html>

请求-js.js

require(["dojo/dom","dojo/on","dojo/request","dojo/json","dojo/parser","dojo/ready"


], function(dom,on,request,JSON,parser,ready) {

ready(function() {
    console.log("request start");

    function sendRequest (url,assetCode,fromDate,toDate) {
        console.log("Request innit");
        request(url,{
            method: "POST",
            handleAs: "json",
            headers: {"Content-Type": "application/json"},
            data: JSON.stringify(
                [
                    {
                        "AssetCodes": assetCode,
                        "FromGasDay": fromDate,
                        "ToGasDate": toDate

                    }

                ]
            )


        }).then(function(resp){
            console.log(JSON.stringify(resp));
            var naStorageJSON = resp;
        });
    }

    console.log("request end");

});

});

主要-js.js

require([
"dojo/dom","dojo/on","dojo/parser","dojo/json","dojo/request","dojo/ready"

], function(dom,on,parser,JSON,request,ready) {


ready(function() {



    console.log("Main Start");
    var url = "http://*********";
    var assetCode = ["**"];
    var toDate = "****";
    var fromDate ="*****";

    on(dom.byId("senecaLakeBtn"),"click",     sendRequest(url,assetCode,toDate,fromDate));







    console.log("Main End");


});
});

问题是这里的范围。通过在 js 脚本的顶部(在其后续函数之外)声明一个空数组,应用程序中的其他脚本可以访问该函数。

var app = [];
require(["dojo/dom","dojo/on","dojo/request","dojo/json","dojo/parser","dojo/ready"

], function(dom,on,request,JSON,parser,ready) {

ready(function(){
  app.sendRequest = function sendRequest (url,assetCode,fromDate,toDate) {
...
...
}
}

是否可以通过引用

从其他脚本中调用它们

app.sendRequest(arg1,arg2,arg3);