Angularjs ui-router,当嵌套变得太多时

时间:2017-08-01 14:55:33

标签: javascript angularjs performance angular-ui-router

简单问题:我正在重构一个大型应用程序,我在应用程序的不同部分找到了很多共同点,这似乎非常适合嵌套路由。但是,我发现自己越来越多地筑巢。例如,我有一个像这样的州:

app.budgetAddComponent.transport.online.seleccionar

其中一些状态只是一些HTML,例如app是导航栏,或transport是一组标签。

无论如何,我发现自己在seleccionar状态下深受好评,使用来自budgetAddComponent州的东西,我开始怀疑自己是不是太过分了。

那么,任何深度嵌套的经历都是这样的吗?是太多还是只是正常?

1 个答案:

答案 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,其名称为tabsmaintemplate。然后你可以直接在线状态包含两个视图,一个是&#39;标签&#39;只有模板&amp;其他观点&#39; maintemplate&#39;既有html部分也有控制器。通过这种方式,不需要单独的状态transport。这样你可以减少不。当没有这种需要时,嵌套状态。

查看文档以获取详细信息:https://ui-router.github.io/guide/views#multiple-named-uiviews