我玩模块道场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?还有其他人在做这个吗?
谢谢。这总是让我感到异步的东西。我可能不应该触碰Node.js,直到我得到一个体面的处理! –
我只会添加一个方法调用需要括号。 utils.getDirList(),然后(函数(JSON)......等 –
感谢指出了这一点吉姆但我们不只是从SO复制粘贴还是我们;)。 –