【发布时间】:2017-04-15 04:19:34
【问题描述】:
我有一个嵌套路由,刷新时会丢失模型并显示空白页。代码如下:
路由器:
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”的模型钩子,在等待时,我显示加载模板。 “main-summary-details-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 ,我看到页面也更新了详细信息,但是当我在浏览器中手动刷新这个(/main/summary/details)时,页面是空白的,我观察到这次细节路由中的模型钩子中没有返回模型。
我对解决方案的看法: 我认为这会很理想,因为在刷新时,它会首先要求汇总路由(处于父子关系中),调用 ajax(同时加载),当数据通过时,它会显示详细信息。但我想那不会发生。
我不明白,至于出了什么问题。我的想法是,我是否需要在 details 路由中捕获刷新事件并再次调用 ajax,以便它获取数据。
使用的 Ember 版本 - 1.13.0
【问题讨论】:
标签: javascript ember.js