我正在使用 Dojo 1.8 中的模块,并且我有一个这样定义的模块:
define(["dojo/request/xhr", "dojo/json"],
function(xhr, JSON) {
var url = "server/provider.php";
return {
files: {},
getDirList: function() {
var self = this;
xhr(url).then(function(response) {
response = JSON.parse(response);
// would love to return the JSON for use here
}, function(err) {
console.error(err);
});
}
};
});
我有另一个模块,我想在其中调用该方法然后使用它:
define(["dojo/dom",
"dojo/dom-construct",
"dojo/_base/array",
"afm/utils"
],
function(dom,domConst,array, utils) {
return {
produceHtml: function() {
var json = utils.getDirList(); //this returns undefined
var dirLength = json.length;
console.log(json);
for (var i = 0; i < json.length; i++) {
if(i % 2 === 0) {
domConst.place('<tr class="even"><td>' + json[i].name + '</td></tr>', 'output');
} else {
domConst.place('<tr><td>' + json[i].name + '</td></tr>', 'output');
}
}
}
};
});
当然,我可以将 DOM 创建代码放入 util 模块中,但这是在不应该的地方混合视图逻辑。如果我想重用 util.getDirList 方法,那就太可怕了。
如何使用该方法返回的 JSON?还有其他人这样做吗?