简单的问题:我正在工作中重构一个大型应用程序,我发现应用程序的不同部分之间有很多共同点,这似乎很适合嵌套路由。然而,我发现自己越来越嵌套。目前,例如我有这样的状态:
app.budgetAddComponent.transport.online.seleccionar
其中一些状态只是一些 HTML,例如作为导航栏的 app
或作为一组选项卡的 transport
。
无论如何,我发现自己处于 seleccionar
状态,使用 budgetAddComponent
状态中的东西,我开始怀疑我是否做得太过分了。
那么,有类似深度嵌套的经验吗?是太多了还是正常?
最佳答案
拥有深层状态完全没问题,它不会影响性能,只是看起来有点复杂。
但是为了减少深度,您可以使用多个命名 View 而不是所有嵌套路由。因此,当您的某些路线只是导航栏或选项卡等模板时,您可以拥有如下内容:
<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
。然后,您可以直接拥有包含两个 View 的在线状态,其中一个作为“选项卡”,仅包含模板,另一个 View “主模板”同时具有 html 部分和 Controller 。这样就不需要单独的状态传输
。这样你就可以减少no。当不需要时嵌套状态。
查看文档了解详细信息:https://ui-router.github.io/guide/views#multiple-named-uiviews
关于javascript - Angularjs ui-router,当嵌套变得太多时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45441228/