バックグラウンド
私のアプリケーションには、nodes
(一般的なデータ) とservices
(一種のnode
) があります。.../api/nodes
URLとにリクエストすることで、バックエンドからデータを取得できます.../api/services
。すべてservices
もであるため、 (は のサブセットです)nodes
を要求することによってそれらも返されます。私がこれを行う理由は、一部のビュー/テンプレートでは特定の機能に関心があるためですが、他のビューでは一般的なプロパティに関心があるためです。nodes
services
nodes
services
node
問題
サービスには、インデックス コントローラー (すべての のテーブル リスト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.setupController
index
この問題をさらにデバッグするために、どのようなアクションを提案できますか? 私は現在アイデアがありません。物事をさらに奇妙にするために、私は他の種類のオブジェクト ( agents
) を持っています。これらは、まったく同じように実装されていservices
ますが、この奇妙な動作を示していません。