Angular UI Router - Views in an Inherited State

前端 未结 4 1086
误落风尘
误落风尘 2021-02-01 07:38

edit: Based on the answer by @actor2019 I want to update my question to better explain the problem:

Using Angular UI-Router(v0.0.2), I\'ve setup the app

4条回答
  •  深忆病人
    2021-02-01 08:11

    According to the ui-router documentation, when the application is in a particular state—when a state is "active"—all of its ancestor states are implicitly active as well. So, for example, when the "contacts.list" state is active, the "contacts" state is implicitly active as well, because it's the parent state to "contacts.list". Child states will load their templates into their parent's ui-view. I'd reccomend looking over the section of their documentation entitled Nested States & Views to gain a fuller understanding of how to do this.

    In the code you have provided us here, the parent state of the search template is home, while

    .state('header.search', {
        templateUrl: "views/search.html",
        controller: "SearchCtrl"
    })
    

    implies that the parent state of the search template should be header in order for the view to get loaded correctly. So, I believe the following changes to your app.js will fix your issue.

    app.js

    $stateProvider
      .state('home', {
        url: "/",
        views: {
          '': {
            templateUrl: "views/mainContent.html",
            controller: "MainCtrl"
          },
          'header': {
            templateUrl: "views/header.html"
          },
          'footer': {
            templateUrl: "views/footer.html"
          },
        }
      })
      .state('home.search', {
        views: {
          'search': {
            templateUrl: "views/search.html",
            controller: "SearchCtrl"
          }
      })
      .state('anotherPage', {
        url: "/anotherPage",
        templateUrl: "views/anotherPage.html"
      });
    

提交回复
热议问题