【发布时间】:2014-04-03 03:43:46
【问题描述】:
我目前正在使用 EmberJs 和 Ember-Data 来构建一个由 Laravel JSON api 支持的应用程序。
我在保存过程中遇到了一点问题,主要是在模型创建方面。
这是我的工作流程:
- Ember 对象控制器自救
this.get("model").save() - Laravel (REST api) 接收数据并将其持久化,因此 为其创建唯一 ID
- api 返回新数据(即 尊重 Ember 约定)使用正确的 ID
- ???? Ember-Data 没有 似乎关心响应,因为它什么都不做......
这里的问题:id 即使已经给出,它仍然未定义......
我发现的解决方法是重新加载模型...但考虑到我想要重新加载的数据在 save() 之后直接可供 Ember 使用,这是一个很大的性能缺陷
有什么想法吗?
编辑 **
问题只发生在我添加的第一个对象上。当我重复该过程时,下一个对象会正确刷新。如果我点击刷新,它会重新开始:第一个对象错过了他的刷新,以下是可以的。
这是我关于添加过程的代码:
路线
App.CategoriesNewRoute = Ember.Route.extend({
model: function()
{
return this.store.createRecord("category").set("active", true);
},
setupController: function(ctrl, model)
{
ctrl.set("errors", 0);
ctrl.set("model", model);
}
});
我没有CategoriesRoute 的任何路由器,因为数据从一开始就在我的 ArrayController 中。
控制器
App.CategoriesNewController = Ember.ObjectController.extend({
needs: "application",
actions:
{
save: function()
{
this.get("model").save();
this.get("target").transitionTo("categories");
},
cancel: function()
{
this.get("model").rollback();
this.get("target").transitionTo("categories");
}
}
});
编辑 ** 2 我尝试了下面提供的代码,但没有成功...
我添加了 2 条记录,第一个没有它的 ID...第二个得到它,所以问题似乎只在第一次保存...
这是我从 API 获得的 2 个响应
对象A
{"category":{"nameFr":"aaa","nameEn":"aaa","active":true,"id":10}}
对象B
{"category":{"nameFr":"bbb","nameEn":"bbb","active":true,"id":11}}
【问题讨论】:
-
嗯,我没有注意到这种行为。您使用的是 Ember Data 的最新测试版吗?如果是这样,保存模型后 id 是不在模型上还是不在控制器上(或不在任何一个上)?您能否发布一些代码或 JSBin 来说明您在做什么?
-
我添加了一些关于我发现的东西的细节
-
返回到 Ember 的 JSON 对象是什么样的?
-
在下面回答,但可能会有更多事情发生。您可以添加您的 CategoriesRoute 代码吗?
-
JSON 看起来不错。也许包括一个 JSBin,其中包含您的所有路由器代码,以及您访问 id 的代码?
标签: ember.js ember-data