Ember - 嵌套子路径在路由刷新/重新加载时丢失模型

时间:2016-11-30 18:03:35

标签: javascript ember.js

我有一个嵌套路由,刷新时会丢失模型并显示空白页面。代码如下:

路由器

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

1 个答案:

答案 0 :(得分:0)

我确实通过最终在刷新详细信息页面时再次调用ajax来解决这个问题。我确实做了一个检查,如果“this.modelFor('mainSummary')”可用,则返回此模型,否则从ajax获取模型。这对我有用。

但是我仍然想知道,理想情况下它应该是单独的,即我刷新时,/ main / summary上的ajax应该被称为自身,从而在模型可用时呈现细节。