2013-07-24 88 views
0

我的代码非常简单(客户端):我怎么能看到我的Ember.js从服务器响应

Record.Router.map(function() { 
    this.resource('main', { path: '/' }); 
}); 


Record.MainRoute = Ember.Route.extend({ 
    model: function() { 
     var response = Record.Rank.find(); 
     console.log(response.get('name')); 
     console.log(response); 
     return Record.Rank.find(); 
    } 
}); 

我的模型:

Record.Rank = DS.Model.extend({ 
    id: DS.attr('integer'), 
    rank: DS.attr('integer'), 
    content: DS.attr('string') 

}); 

我用RESTadapter:

Record.Store = DS.Store.extend({ 
    revision: 12, 

    adapter: DS.RESTAdapter.reopen({ 
     namespace: 'recordApp' 
    }) 

}); 
我的服务器端代码(PHP):

我想到的东西我发出Record.Rank.find()后,但我console.log(response.get('name'))日志不确定和第二console.log(response)显示下面的信息,从服务器内部约回声无信息:

Output of <code>console.log(response)</code>

如何看到从响应服务器,在Ember?

+0

了我的头顶,这是'DS.attr(“编号”)''不DS .attr( '整数')'。你不必在模型中定义id。另外,我相信商店默认使用'DS.RESTAdapter',所以你可以在'Store'定义后重新开启。 –

回答

2

1:调用上DS.Model find不带任何参数,即Record.Rank.find(),相当于发送findAll()请求到服务器。换句话说,它应该取全部Record.Rank。因此余烬数据期望的格式的响应的数组:

{ 
    "ranks":[ 
    { 
     "id": "1", 
     "rank": "2", 
     "content": "walla" 
    }, 
    { 
     "id": "2", 
     "rank": "5", 
     "content": "foo" 
    } 
    ] 
} 

第二:即使从PHP的响应是正确的(如上所述),console.log(response.get('name'));可能会返回undefined因为该请求不是尚未完成并且记录不可用。如果你真的想访问加载到您需要将您的代码放到一个Promise resolve callback店的记录:

Record.MainRoute = Ember.Route.extend({ 
    model: function() { 
     var response = Record.Rank.find(); 
     response.then(function(ranks) { 
     console.log(ranks.getEach('name')); 
     }); 
     return response; 
    } 
}); 
+2

此外,如果您访问chrome开发工具的网络选项卡,然后发起请求,您将能够观察请求/响应 – DVG

相关问题