我想创建一个可以通过自己的路径访问的模态视图。
问题是 - 我希望在我的应用程序的其他状态/视图/路径之上显示此视图,其中包含大数据计算。
我以为我可以用嵌套路线做到这一点。如果我们转换到子路线,那么什么都不会重新计算,只是儿童秀 - 非常好。
但是在实践中,当我尝试为我的一些资源添加子路由时。我遇到了this question中描述的问题。因此,嵌套路由不是它的解决方案。
什么是解决方案?有什么想法吗?
答案 0 :(得分:2)
如果它必须位于自己的路径中,更合适的方法是使用单独的路径传递“先前路由”上下文,以避免路由序列化冲突。如果您对没有单独的路径持开放态度,则可以在新的插座中渲染“模态”视图,而不会将上下文“面包屑”传递到模态路径中。
答案 1 :(得分:0)
我的解决方案就在这里。 (事实上它是带有一些作弊的嵌套路线)
1)模态进入'模态'出口
2)我们有不同名称的模态路由,但路径部分相同。
this.resource('category', { path: '/category/:category_id' }, function () {
/* Different names for the same modal route */
this.resource('modal1', { path: 'card/:card_id' });
});
// url - semantic/books/card/id99
this.resource('semantic', { path: '/semantic/:semantic_id' }, function () {
/* Different names for the same modal route */
this.resource('modal2', { path: 'card/:card_id' });
});
3)执行转换时我们必须为父路径传递上下文
var curPath = this.controllerFor("application").currentPath;
if (/^category/g.test(curPath))
this.transitionToRoute('modal1', { category_id: cat_id, card_id: card_id ) });
else if (/^semantic/g.test(curPath))
this.transitionToRoute('modal2', { semantic_id: sem_id, card_id: card_id ) });