背景
在我的应用程序中,我有nodes(通用数据)和services(一种node)。我可以通过请求 URL.../api/nodes和.../api/services. All servicesare also nodes,因此这些也通过请求nodes(services是nodes) 的子集返回。我这样做的原因是因为在某些视图/模板中我对特定services功能感兴趣,但在其他视图中我对通用node属性感兴趣。
问题
对于服务,我有一个索引控制器(所有的表列表services)和一个显示控制器(特定的详细信息service)。这是索引路由器:
App.ServicesIndexRoute = Ember.Route.extend({
model: function () {
return App.Service.find();
}
});
在索引控制器中,我得到了正确的对象类型App.Service(如在 Ember 对象的转储中所见, in _reference.type。我通过执行以下操作从索引模板检查控制台中的对象:
<tbody>
{{#each model}}
{{log this}}
<tr class="odd-even">
<td>{{#linkTo "services.show" this}}{{shortId id}}{{/linkTo}}</td>
...
{{/each}}
</tbody>
但是在我的显示控制器中,我正在接收其他对象。它们具有“相关”数据(它们具有相同的id),但是是新的 ember 对象(在这种情况下为 type App.Node,如 中所示_reference.type)我已经验证路由设置已经接收到错误的对象:
App.ServicesShowRoute = Ember.Route.extend({
setupController: function (controller, node) {
console.log('ServicesShowRoute.setupController > node -> %o', node);
controller.set('model', node);
}
});
我担心 ember 会因为有相同的不同对象而混淆id。它们对应不同的模型和不同的 api 端点,但它们在后端本质上是相同的数据,尽管 ember 不应该意识到这一事实。让我完全困惑的是索引控制器有正确的数据,但显示控制器(通过linkTo索引控制器获取数据)有错误的数据。
这可能是一个问题linkTo。为什么linkTo将不同的对象传递给它在模板ServicesShowRoute.setupController中看到的对象?index
您可以建议采取哪些措施来进一步调试此问题?我目前没有想法。更奇怪的是,我还有其他类型的对象agents(services