1

バックグラウンド

私のアプリケーションには、nodes(一般的なデータ) とservices(一種のnode) があります。.../api/nodesURLとにリクエストすることで、バックエンドからデータを取得できます.../api/services。すべてservicesもであるため、 (は のサブセットです)nodesを要求することによってそれらも返されます。私がこれを行う理由は、一部のビュー/テンプレートでは特定の機能に関心があるためですが、他のビューでは一般的なプロパティに関心があるためです。nodesservicesnodesservicesnode

問題

サービスには、インデックス コントローラー (すべての のテーブル リストservices) とショー コントローラー (特定の の詳細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 はこの事実を認識すべきではありません。私を完全に混乱させているのは、インデックス コントローラーには正しいデータがありますが、ショー コントローラー (linkToインデックス コントローラーからデータを取得する) には間違ったデータがあることです。

これは の問題でしょうかlinkTo。テンプレートに表示されているlinkToオブジェクトとは異なるオブジェクトを に渡すのはなぜですか?ServicesShowRoute.setupControllerindex

この問題をさらにデバッグするために、どのようなアクションを提案できますか? 私は現在アイデアがありません。物事をさらに奇妙にするために、私は他の種類のオブジェクト ( agents) を持っています。これらは、まったく同じように実装されていservicesますが、この奇妙な動作を示していません。

4

0 に答える 0