私は 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 を使用するにはどうすればよいですか? 他の誰かがこれをやっていますか?