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