简单问题:我正在重构一个大型应用程序,我在应用程序的不同部分找到了很多共同点,这似乎非常适合嵌套路由。但是,我发现自己越来越多地筑巢。例如,我有一个像这样的州:
app.budgetAddComponent.transport.online.seleccionar
其中一些状态只是一些HTML,例如app
是导航栏,或transport
是一组标签。
无论如何,我发现自己在seleccionar
状态下深受好评,使用来自budgetAddComponent
州的东西,我开始怀疑自己是不是太过分了。
那么,任何深度嵌套的经历都是这样的吗?是太多还是只是正常?
答案 0 :(得分:1)
完全没有深度状态,它不应该妨碍性能,它看起来有点复杂。
但是,为了减少深度,您可以拥有多个命名视图而不是所有嵌套路径。因此,当您的某些路线只是一个模板,如导航栏或标签时,您可以拥有:
<div ui-view="navbar"></div>
<div ui-view="tabledata"></div>
在儿童状态定义中有:
$stateProvider
.state('budgetAddComponent', {
views: {
'navbar': { ... templates and/or controllers ... },
'tabledata': { ... templates and/or controllers ... }
}
})
现在,您不需要仅针对导航栏模板的单独父状态。类似地,在budgetAddComponent的主模板(例如,在tabledata内)中有两个ui-view,其名称为tabs
和maintemplate
。然后你可以直接在线状态包含两个视图,一个是&#39;标签&#39;只有模板&amp;其他观点&#39; maintemplate&#39;既有html部分也有控制器。通过这种方式,不需要单独的状态transport
。这样你可以减少不。当没有这种需要时,嵌套状态。
查看文档以获取详细信息:https://ui-router.github.io/guide/views#multiple-named-uiviews