1

背景

在我的应用程序中,我有nodes(通用数据)和services(一种node)。我可以通过请求 URL.../api/nodes.../api/services. All servicesare also nodes,因此这些也通过请求nodes(servicesnodes) 的子集返回。我这样做的原因是因为在某些视图/模板中我对特定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

您可以建议采取哪些措施来进一步调试此问题?我目前没有想法。更奇怪的是,我还有其他类型的对象agentsservices

4

0 回答 0