Angular ui-router : Parent & Child Views

前端 未结 1 379
难免孤独
难免孤独 2021-01-03 00:18

I want to build a site with the following structure header-view, main-view, footer-view . So I defined a root route which contains the header & footer. Children of root

相关标签:
1条回答
  • 2021-01-03 00:36

    There is a link to working plunker.

    The UI-Router logic how to find a target/anchor for a view is: always try insert child into parent. If not possible, then use absolute naming. see:

    View Names - Relative vs. Absolute Names

    So what I changed, is, that the parent unnamed view is now containing a target/anchor for a child - unnamed view <ui-view />:

    .state('root', {
      abstract: true,
      views: {
        '@': {
            template: '<ui-view />', // NEW line, with a target for a child
            controller: 'RootCtrl',
            controllerAs: 'rootCtrl'
        },
        ....
    

    Also, because we say, that the default url is

      $urlRouterProvider.otherwise('/home');
    

    we have to have such state:

    .state('root.home',{
        parent:'root',
        url:'/home', // this is the otherwise, to have something on a start up
    

    Check it here

    Another approach with a plunker here, could be to target the root view in the child:

    .state('root.home',{
        parent:'root',
        url:'/home',
        views: {
          '@': {
          templateUrl:'home.html',
          controller: 'HomeController',
          controllerAs:'homeCtrl'
          }
        },
    

    In this case, the parent state does not have to have <ui-view /> - we target root, but we won't be inheriting anything... Why is that? See this link:

    Scope Inheritance by View Hierarchy Only

    0 讨论(0)
提交回复
热议问题