我有一个嵌套路由,刷新时会丢失模型并显示空白页面。代码如下:
路由器:
app.Router.map(function(){
this.resource('main',{path:''}, function(){
this.route('summary',{path:'/main/summary'},function(){
this.route('details',{path:'/details'})
})
})
})
文件结构:
-app
-route
-main-route.js
-main-summary-route.js
-main-summary-index-route.js
-main-summary-details-route.js
-main-loading-route.js
-controller
-main-controller.js
-main-summary-controller.js
-main-summary-index-controller.js
-main-summary-details-controller.js
-templates
-main
-summary
-index.hbs
-details.bhs
-summary.hbs
-loading.hbs
-main.hbs
-application.hbs
关于代码的简要说明: 模板 main.hbs 和 application.hbs 中定义了{{outlet}}。 summary.hbs 中也包含{{outlet}},因此当点击url / main / summary时,它只显示summary / index.hbs中的内容以及url / main / summary /细节被点击,它只通过渲染成摘要来详细显示。
我的ajax调用是在" main-summary-route "的模型钩子中,在等待时,我显示加载模板。 " 主汇总细节-controller.js "延伸自" main-summary-index-controller.js "这样代码就可以重用了。 同样," main-summary-details-route.js "获得与" main-summary-route.js "中的模型相同的模型通过详细路线中的模型钩子 -
model: function(){
return this.modelFor('mainSummary')
}
这是因为ajax调用将汇总和路由的数据汇集在一起。
问题陈述:当我点击url main / summary时,我得到页面,然后从那里,点击,转到主要/摘要/详细信息,我看到页面更新了详细信息,但是当我在浏览器中手动刷新(/ main / summary / details)时,该页面为空白,我发现此次详细路径中的模型钩子中没有返回模型。
我对解决方案的看法: 我认为这可以理想地工作,因为在刷新时,它首先要求汇总路由(在父子关系中),调用ajax(加载旁边),当数据通过时,它将显示详细信息。但我猜这不会发生。
我没有得到它,至于什么是错的。我想到的想法是,我是否需要捕获详细信息路径中的刷新事件并再次调用ajax,以便获取数据。
使用的灰烬版本 - 1.13.0
答案 0 :(得分:0)
我确实通过最终在刷新详细信息页面时再次调用ajax来解决这个问题。我确实做了一个检查,如果“this.modelFor('mainSummary')”可用,则返回此模型,否则从ajax获取模型。这对我有用。
但是我仍然想知道,理想情况下它应该是单独的,即我刷新时,/ main / summary上的ajax应该被称为自身,从而在模型可用时呈现细节。