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

标签 javascript html dojo

我尝试从另一个 js 文件调用函数,该文件与我的主 js 脚本和 html 文件位于同一应用程序目录中。我收到一条错误,声称引用的函数不存在。我已经按照正确的顺序引用了主 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");

});

});

main-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);

关于javascript - 从其他 JS 文件访问函数 - DOJO,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34362014/

相关文章:

javascript - ES5中如何让构造函数指向 super 函数原型(prototype)

php - 如何更漂亮地编写这个循环?

javascript - dojo中如何加载不是模块的JS文件?

javascript - 图像 src 不使用 javascript 更改

php - 不调用发布数据

javascript - 正则表达式 不区分大小写并输入匹配

javascript代码解释

html - 如何让第二行文本在悬停时隐藏和显示?仅限 CSS

html - 图片、标题和文本对齐

spring - 使用 Spring 框架的 DOJO