为什么ember没有正确地为我的模型创建对象



我今天正在为一个项目评估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, 

最新更新