我今天正在为一个项目评估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提前
编辑#1
路线如下:
Hex.PostRoute = Ember.Route.extend({
model: function(params) {
console.log('called with: ' + params.post_id);
return Hex.Post.findById(params.post_id);
}
});
编辑#2
如何详细说明路线的构造:
this.resource('posts', function(){
this.resource('post', { path: ':post_id' });
});
这是我的错,我在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;
});
又名
id).then(
而不是
id,