我正在使用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;
});
}
}
});
答案 0 :(得分:1)
您没有将该功能作为回调传递。您正在执行它并将结果作为第二个参数传递。
conf.get("/js/config.json", init());
应该是
conf.get("/js/config.json", init);