LinkTo传递错误的对象

时间:2013-08-01 10:58:37

标签: ember.js ember-data

背景

在我的应用程序中,我有nodes(通用数据)和services(一种node)。我可以通过请求网址.../api/nodes.../api/services从后端获取数据。所有services也都是nodes,因此请求nodesservicesnodes的子集)也会返回这些内容。我这样做的原因是因为在某些视图/模板中我对特定的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完全相同,但它们并没有显示出这种奇怪的行为。

0 个答案:

没有答案