我想将json文件的块存储到数组中。 这是我当前的代码,在controller(ctrl)中:
var ctrl = this;
var id = (location.href).replace(/.*\//g, ''); //use m.route() ?
ctrl.list = [];
m.request({method: "GET", url: "/data/"+id}).then(function(blocks){
blocks.map(function(block) {
ctrl.list.push(block);
});
});
console.log(ctrl.list); //Result : an empty array. Why ?
答案 0 :(得分:0)
m.request
是一个异步操作:它需要向服务器发出请求,等待服务器应答,加载内容,然后给你响应 - 这就是它实现{{1}的原因}:给你一个回调,这样你就可以在数据到达时对数据进行处理。
但是,在您发出请求后,您的then
会立即发生:响应尚未准备就绪。需要在console.log
回调函数内调用任何依赖于服务器数据的内容。
答案 1 :(得分:0)
controller: function() {
var response = m.prop(); return {
response: m.request({method:"GET",
url:"http://yourUrl", data:{date to send in Json format}}),
视图中的
m("ul" , ctrl.response().map(function(folder){
return [
m("li" , folder.name),
在这种情况下,文件夹是您从服务器接受的Json,假设您在响应 [" name" :" Jhon"] ,使用folder.name,您的li的值将变为Jhon。 请记住,m.request至少需要方法和 url 数据,这不是必需的