ほとんど機能するコードをいじる:http://jsfiddle.net/VDA2p/16/
ルートの抜粋は、問題がどこにあるかを信じています。
// #/listings/:listing_id/videos
App.VideosRoute = Ember.Route.extend({
model: function(params) {
return this.modelFor('listing');
}
});
「ビデオ」リンクを選択すると、URLは「/ Listings / 1 / videos」(たとえば)になり、コンテンツは問題なくロードされます。アドレスバーから直接このURLにアクセスした場合、ビデオは取得されません。私はserialize()の呼び出しをいじってみましたが、それを機能させることができず、正しい道を進んでいるかどうかさえわかりません。また、URLに直接アクセスして動画が表示されない場合は、「/ Listings」URL(コンテンツを適切に読み込む)に直接アクセスして「動画」リンクのいずれかを選択すると、動画コンテンツは次のようになります。いずれのエントリに対してもロードされなくなりました。ただし、「/ Listings」URLでブラウザ/アプリを更新すると、「ビデオ」リンクの下にコンテンツが存在します。
更新1:
上記の元のコードセグメントを代わりに変更すると、
// #/listings/:listing_id/videos
App.VideosRoute = Ember.Route.extend({
model: function(params) {
return App.Listings.find(params.listing_id);
}
});
理由はわかりませんが、期待どおりに動作します。
更新2:
ただし、リンクを介さずに「/ Listings / 1 / videos」URLに直接アクセスすると、「ビデオの表示」リンクが壊れました。クリックすると個々のビデオが正常に読み込まれますが、「/ Listings / null /videos/1」として表示されるようになりました。戻るボタンを使用すると、「/ Listings / 1 / videos」に戻り、すべての「ビデオの表示」リンクに「null」が含まれなくなります。
たとえば、「/ Listings / 1 / videos / 2」URLに直接アクセスしようとすると、「エラー:アサーションに失敗しました:ルーターで動的セグメントvideo_idを使用しましたが、App.Videoが存在せず、州のmodel
フックを無効にしませんでした。」私は今も追い詰めるために働いています。「ビデオを見る」リンクを選択すると、データは問題なくロードされます。