0

我正在使用 dojo 编写一个 fontend Web 应用程序,它使用 xhr 对休息端点进行了很多调用。我想有一个地方来存储诸如端点位置和 html 标签引用之类的配置。我以为我会使用对 json 文件的 xhr 调用来执行此操作,但是我无法让我的函数以正确的顺序/完全触发。下面是我的主 js 文件,它有一个 init() 函数,我将其作为回调传递给我的 conf 初始化程序(“ebs/conf”)模块,也在下面。我已经使用 Chrome 调试器在我的 conf.get() 方法中设置断点,它看起来好像从未被调用过。

有人可以给我一些建议吗?

主 JS 文件:

// module requirements
require([ "dojo/dom", "dojo/on", "ebs/prices", "ebs/cart", "ebs/conf",
    "dojo/ready" ], function(dom, on, prices, cart, conf, ready) {

ready(function() {

    conf.get("/js/config.json", init());

    function init(config) {

        on(dom.byId("height"), "keyup", function(event) {
            prices.calculate(config);
        });
        on(dom.byId("width"), "keyup", function(event) {
            prices.calculate(config);
        });
        on(dom.byId("qty"), "keyup", function(event) {
            prices.calculate(config);
        });
        on(dom.byId("grills"), "change", function(event) {
            prices.calculate(config);
        });

        cart.putSampleCart();
        cart.load(config);

    }

});

});

这是我的“conf”模块(“ebs/conf”):

define(["dojo/json", "dojo/request/xhr"], function(json, xhr) {
return {
    get : function(file, callback) {
        // Create config object from json config file
        var config = null;
        xhr(file, {
            handleAs : "json"
        }).then(function(config) {
            callback(config);
        }, function(error) {
            console.error(error);
            return error;
        });
    }
}
});
4

1 回答 1

1

您没有将函数作为回调传递。您正在执行它并将结果作为第二个参数传递。

conf.get("/js/config.json", init());

应该

conf.get("/js/config.json", init);
于 2013-07-16T20:26:07.697 回答