【发布时间】:2015-08-04 18:29:17
【问题描述】:
我最近开始学习 Ember 并使用 Ember-CLI,因此我不太了解 Ember 数据以及它对我的应用子目录中的关系所期望的数组名称。
// models/server.js
import DS from 'ember-data';
export default DS.Model.extend({
serverHistory: DS.hasMany("history/server", { async: true })
});
// models/history/server.js
import DS from 'ember-data';
export default DS.Model.extend({
server: DS.belongsTo("server", { async: true })
});
我已尝试从我的 API 返回这些名称
server_historys_ids
server_histories_ids
history_server_ids
history_servers_ids
但我没有在我的应用程序中看到对服务器历史记录的 XHR 请求。服务器本身可以正常获取。
更新
我更改了我的关系名称,API 正在返回历史 ID,但我仍然没有收到历史 json 请求,即使我尝试在模板中使用 each。游戏关系数据可在模板中访问,请求成功。
// models/server.js
import DS from 'ember-data';
export default DS.Model.extend({
// attr's here.. not relevant
// Relationships
game: DS.belongsTo("game", { async: true }), // works
serverHistories: DS.hasMany("history/server", { async: true }) // doesn't make a request like game does.
});
我也有一个adapter/history/server.js,但它只是告诉使用什么命名空间 - “api”。
更新 2
我认为问题可能出在我将数据调用到模型的方式上。
// routes/server/view/index.js
import Ember from 'ember';
export default Ember.Route.extend({
model: function() {
var parentModel = this.modelFor("server.view");
return this.store.query("server", { server_address: parentModel.server_address });
// return this.store.find("server", 1);
}
});
为什么当我使用带有 id 的 find 时它会更新模板数据,而当我使用带有参数的查询时它却不更新?
更新 3
所以我解决了我的find 和query 问题,这是我的工作方式:https://stackoverflow.com/a/31831667/1814027
关系问题仍然存在。我在 Ember 工具栏中没有看到 serverHistory 数据,也没有向 API 发出请求。
【问题讨论】:
-
我建议不要将模型放在子目录中。痛苦是不值得的。
-
那我该如何改进我的模型和路线?
-
致@torazaburo:我正在广泛使用命名空间模型而没有感到任何痛苦。此外,我对结构化模型感到满意。
-
更新了我的问题,请参阅“更新 2”。
-
当我从我的 api 返回 ¨server_history¨ { "servers":.., "server_history":.. } Ember 工具栏显示服务器历史数据存在。所以我的问题还是一样:如果我只返回 server_history_ids,为什么 Ember 不通过请求加载服务器历史记录?如果我将它们与服务器请求一起返回,它会很好地获取 server_history 数据。
标签: ember.js ember-data ember-cli