我今天正在评估一个项目的ember并用我们的api进行测试。我们有一个如下所示的帖子模型:
Hex.Post = Ember.Object.extend({
id: null,
body: null,
isEnabled: null,
createdAt: null
});
Hex.Post.reopenClass({
findById: function(id){
return Ember.$.getJSON("/arc/v1/api/post/" + id, function(data){
var post = Hex.Post.create();
post.set('id', data.id);
post.set('body',data.body);
post.set('isEnabled',data.is_enabled);
post.set('createdAt',data.created_at);
return post;
});
}
});
....
<script type="text/x-handlebars" id="post/_edit">
<p>{{input type="text" value=id}}</p>
<p>{{input type="text" value=isEnabled}}</p>
<p>{{input type="text" value=header}}</p>
<p>{{input type="text" value=created_at}}</p>
<p>{{textarea value=body}}</p>
</script>
我正在使用LOG_TRANSITIONS: true
运行应用程序,因此我能够看到我们将转到正确的嵌套路由并且正在调用正确的URL。虽然在我的模板中有问题,它会响应JSON返回的值而不是findByID中设置的值。这意味着created_at有效,但createdAt没有或is_enabled有效但isEnabled没有。我究竟做错了什么? thx提前
这是路线:
Hex.PostRoute = Ember.Route.extend({
model: function(params) {
console.log('called with: ' + params.post_id);
return Hex.Post.findById(params.post_id);
}
});
如何构建详细路线:
this.resource('posts', function(){
this.resource('post', { path: ':post_id' });
});
答案 0 :(得分:2)
这是我的坏,我没有在getJSON中看到逗号,基本上我们将成功返回到函数和模型钩子,而不是函数,然后函数导致模型钩子。
return Ember.$.getJSON("/arc/v1/api/post/" + id).then(function(data){
var post = Hex.Post.create();
post.set('id', data.id);
post.set('body',data.body);
post.set('isEnabled',data.is_enabled);
post.set('createdAt',data.created_at);
return post;
});
AKA
id).then(
而不是
id,