UI路由器嵌套视图问题

时间:2015-03-01 18:01:46

标签: angular-ui-router

我再次与ui路由器挣扎。

我正在尝试一些嵌套视图。

导航到url / account / management / Company(由Symfony管理的路由)时会调用主要布局home.html。然后我想让ui路由器启动。

看起来像这样:

<div ui-view="discrimSelector"></div>
<div ui-view="main"></div>

然后这是我的js路由定义:

FlatView.config(function($stateProvider, $urlRouterProvider) {

    $urlRouterProvider.otherwise("");

    $stateProvider
      .state('flatView', {
          url:"",
          views: {
              'main': {
                  controller:"flatViewHome",
                  templateUrl:Routing.generate('_NRtworks_FlatView_elementList') 
              },
              'discrimSelector@flatView': {
                  templateUrl:Routing.generate('_NRtworks_FlatView_DiscrimSelector')                 
              }
          }
      });

});

我遵循建议使用第二个视图的全名,但它没有被加载(“主”模板加载很好,我可以在网络标签中看到实际获取了另一个模板的文件但没有插入ui-view)。

我做错了什么?

1 个答案:

答案 0 :(得分:0)

@flatView删除discrimSelector@flatView

符号是uiview @ state。只有当你想加载另一个状态的ui-view时才应该使用它。

E.g。想象一下,你有两个嵌套状态。当您处于子状态时,您想要加载父级(任何祖先)ui-view,那么您将使用此表示法。

 $stateProvider
  .state('parent', {
      views: {
          'A': {
              ...              
           },
          'B': {
              ...           
          }
      }
  })

 .state('child', {
       views: {
          'C': {
              ...              
           },
          'A@parent': {
              ...           
          }
      }
  });