在jQuery单击事件中,调用存储在单独的dojo js文件中的函数

时间:2014-04-17 21:54:55

标签: javascript jquery twitter-bootstrap dojo esri

在尝试分解JS代码时,我已将我的jQuery引导点击事件拖到他们自己的文件中。

所有内容都正确加载但是当尝试从jQuery文件引用我的dojo文件中的函数时,最终结果是“zoomToStreams not defined()”;

是否有一种正确的方法可以将所有内容分解为易于管理的代码,以实现代码可重用性并使不同的库(jQuery,dojo)共存?两者都是通过我文档底部的标签加载的。

// dojo.js

require(["dojo modules",...],function(dojo,...) {
    ...
    function zoomToStream(targetStream) {
       ...
    }
});

// jQuery.js

$(document).ready(function() {
    $("#streamSelection li").click(function(e) {
        switch (e.target.text) {
            case "All Streams":
                zoomToStream("all");
                break;
            case "First Stream";
                zoomToStream("1");
                break;
            ...
        }
    }
 });

1 个答案:

答案 0 :(得分:1)

将您的第一个代码段转换为您可能需要的jquery代码模块。

dojo.js(这不是你命名你的js文件吗?)

define("zoomToStream",["dojo modules",...], function(dojo,...) {
    ...
    function zoomToStream(targetStream) {
       ...
    }
    return zoomToStream;
});

jQuery.js(这真的不是你命名你的js文件吗?)

require(["zoomToStream"],function(zoomToStream) {
    $(document).ready(function() {
        $("#streamSelection li").click(function(e) {
            switch (e.target.text) {
                case "All Streams":
                    zoomToStream("all");
                    break;
                case "First Stream";
                    zoomToStream("1");
                    break;
                ...
            }
        }
    });
});

修改以适合您的文件结构等,对于您的js文件使用这些文件名似乎很奇怪。