Angularjs 角度1.x组件,ui路由器1状态更改

Angularjs 角度1.x组件,ui路由器1状态更改,angularjs,angular-ui-router,angular-components,Angularjs,Angular Ui Router,Angular Components,我有三个组件 应用程序组件 登录组件 仪表板组件 应用程序组件 应用程序组件是组件树的主要组件。该组件还保存基本布局,该布局由内容的标题和包装组成 <div class="container-fluid"> <navigation routes="$ctrl.routes"></navigation> </div> <ui-view></ui-view> 场景 访客正在加载应用程序时,导航栏应该只有导航栏可见,没有登

我有三个组件

  • 应用程序组件
  • 登录组件
  • 仪表板组件
  • 应用程序组件

    应用程序组件是组件树的主要组件。该组件还保存基本布局,该布局由内容的标题和包装组成

    <div class="container-fluid">
      <navigation routes="$ctrl.routes"></navigation>
    </div>
    
    <ui-view></ui-view>
    
    场景

    访客正在加载应用程序时,导航栏应该只有导航栏可见,没有登录等用户项。访客登录并成为用户后,现在应该会看到一个导航栏,其中只包含导航栏项,如dashboard

    问题


    我正在为这个场景寻找解决方案,通常会发生onStateChange事件,我可以在控制器中使用它。我现在看到的唯一可用选项是在每个特定组件中呈现导航。

    我通常引入一个中间/父状态来实现这一点

    例如,我将定义以下状态:

    • 应用程序
      (摘要)
    • app.login
    • app.main
      (摘要)
    • app.main.dashboard
    • app.main.home
    • 等等
    例如,如果我只想为登录用户显示导航,我的路线模板如下所示:

    应用程序
    路线模板

    <ui-view></ui-view>
    
    <div class="container-fluid">
        <navigation routes="$ctrl.routes"></navigation>
    </div>
    <ui-view></ui-view>
    

    我通常会引入一个中间/父状态来实现这一点

    例如,我将定义以下状态:

    • 应用程序
      (摘要)
    • app.login
    • app.main
      (摘要)
    • app.main.dashboard
    • app.main.home
    • 等等
    例如,如果我只想为登录用户显示导航,我的路线模板如下所示:

    应用程序
    路线模板

    <ui-view></ui-view>
    
    <div class="container-fluid">
        <navigation routes="$ctrl.routes"></navigation>
    </div>
    <ui-view></ui-view>
    

    我通常会为仪表板添加一个父状态(登录后的所有状态)。您可以轻松地添加一个抽象的父状态
    仪表板
    ,其主视图与您为
    应用程序
    状态所做的相同。@daan.desmedt这可能是一个正确的选项。您知道其他可能的策略吗?您可以使用
    rootscope
    变量指示何时显示视图部件。。。但是我的观点是,对于
    摘要周期
    ,视图的逻辑性更强,强度更低。我通常会为仪表板添加一个父状态(登录后的所有状态)。您可以轻松地添加一个抽象的父状态
    仪表板
    ,其主视图与您为
    应用程序
    状态所做的相同。@daan.desmedt这可能是一个正确的选项。您知道其他可能的策略吗?您可以使用
    rootscope
    变量指示何时显示视图部件。。。但是我的意见是,对于你的
    摘要周期而言,我的意见
    状态
    视图更具逻辑性,强度更低。正如我在上面的评论中所说,我对你的答案投了赞成票-这也是我的首选解决方案。正如我在上面的评论中所说,对你的答案投了赞成票-这也是我的首选解决方案。