使用json文件存储dojo应用程序的配置

时间:2013-07-16 20:14:57

标签: dojo xmlhttprequest

我正在使用dojo编写一个fontend Web应用程序,它使用xhr执行大量调用以休息端点。我想有一个地方来存储端点位置和html标记引用等配置。我以为我会使用xhr调用json文件来执行此操作,但是我无法按正确的顺序触发我的函数。下面是我的主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;
        });
    }
}
});

1 个答案:

答案 0 :(得分:1)

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

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

应该是

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