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

标签 javascript angularjs performance angular-ui-router

简单的问题:我正在工作中重构一个大型应用程序,我发现应用程序的不同部分之间有很多共同点,这似乎很适合嵌套路由。然而,我发现自己越来越嵌套。目前,例如我有这样的状态:

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 ,名称分别为tabsmaintemplate。然后,您可以直接拥有包含两个 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/

相关文章:

javascript - React Native 中的堆栈导航器

javascript - 如何使用 phantom-crawler 将 html 源代码打印到控制台

javascript - AngularJS:通过评估它们的属性值来显示/隐藏多个 div

javascript - AngularJs指令多次发出

c# - 是否有 "Improving .NET Application Performance and Scalability"的更新版本?

c - 函数指针是否强制清除指令流水线?

javascript - 如何使用 Angular 为元素设置 0-100 渐变的样式

Javascript 简写 OR 操作

angularjs - Angular 中的 ng-include 延迟加载数据的首选方法是什么?

sql - 游标内的 SQL 更新缓慢