摆弄大部分工作代码:http: //jsfiddle.net/VDA2p/16/
Route 的摘录相信问题出在哪里:
// #/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”网址上刷新浏览器/应用程序,则内容存在于“视频”链接下。
更新 1:
如果我将上面的原始代码段更改为
// #/listings/:listing_id/videos
App.VideosRoute = Ember.Route.extend({
model: function(params) {
return App.Listings.find(params.listing_id);
}
});
它按预期工作,虽然我不明白为什么。
更新 2:
但是,当直接访问“/listings/1/videos”网址而不是通过链接时,它确实破坏了“查看视频”链接。它现在显示为“/listings/null/videos/1”,即使当您单击它时,单个视频也可以正常加载。使用后退按钮将带您回到“/listings/1/videos”,其中所有“查看视频”链接不再包含“null”。
例如,尝试直接访问 '/listings/1/videos/2' url 会引发错误“错误:断言失败:您在路由器中使用了动态段 video_id,但 App.Video 不存在并且您没有超越你的州的model
钩子。” 我现在也在努力追捕。选择“查看视频”链接将很好地加载数据。