0

我想将 json 文件的块存储到数组中。这是我当前的代码,在控制器 (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 ?
4

2 回答 2

0

m.request是一个异步操作:它需要向服务器发出请求,等待服务器响应,加载内容,然后给你响应——这就是它实现的原因then:给你一个回调,这样你就可以用数据到达时。

但是您console.log在发出请求后立即发生:响应尚未准备好。任何依赖于服务器数据的东西都需要在then回调函数中调用。

于 2015-06-02T08:04:55.417 回答
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数据,这不是必需的

于 2015-12-18T15:17:21.720 回答