背景
在我的应用程序中,我有nodes
(通用数据)和services
(一种node
)。我可以通过请求 URL.../api/nodes
和.../api/services
. All services
are 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