UI-Router 抽象状态 child 不呈现

UI-Router abstract state child doesnt render

我在理解 UI-Router 抽象状态的工作原理时遇到了一些困难。 事情是这样的: 我有一个 index.html,其 <body>.

中只有一个 <ui-view> 标签

主要有两种状态:Landing 和 App(/landing 和 /app)。

目前登陆状态没有问题,因为它只是一个静态文件(没有 child 视图等)。

但是对于我的 /app 状态,我需要一个涵盖整个应用程序的抽象 parent 状态(需要为每个 child 状态解析用户配置文件)。

问题是这个抽象状态的child也有sub-view。我无法渲染这些。

我的 $stateProvider 配置(简化):

//landing state, no problem here
.state('landing', {
    url: '/landing',
    templateUrl: 'landing.html'
})
// my abstract parent state, with the resolve
.state('root', {
    url: '',
    abstract: true,
    template: "<div ui-view></div>",
    resolve: {
        current_user: function (UserFactory) {
            return UserFactory.initCurrentUserProfile();
        }
    }
})

// the child which cannot render the view headerAndSearchbar
.state('root.app', {
    url: '/app',
    templateUrl: 'app.html',
    views: {
        'headerAndSearchbar': {
            templateUrl: './partials/header/headerAndSearchbar.html'
        }
    }
})

app.html :

<div ui-view="headerAndSearchbar">     
</div>
<div>
    This is app.html     
</div>

请注意,如果我删除状态 root.app 中的 views 声明,我可以看到文本 "This is app.html"。 headerAndSearchbar.html 只包含简单的 html & css

有什么想法吗?我为此大发雷霆-我错过了什么?

有两个问题。

首先,child'root.app'里面其实有两个视图。

  1. 未命名(与templateUrl 'app.html'相关的那个)
  2. 命名视图'headerAndSearchbar'

这意味着,两者大多数都在 views : {} 设置中声明:

.state('root.app', {
    url: '/app',
    //templateUrl: 'app.html',
    views: {
        '' : { templateUrl: 'app.html' },
        'headerAndSearchbar': { ... n
    }...

但这还不够。

其次,第二个(命名)我们需要绝对命名,因为它与其parent无关,而是与其自身有关:

.state('root.app', {
    url: '/app',
    //templateUrl: 'app.html',
    views: {
        '' : { templateUrl: 'app.html' },
        // this is the same as a path to parent view 'headerAndSearchbar@root'
        // 'headerAndSearchbar': { ...
        // this means ... search in this state, inside of app.html
        'headerAndSearchbar@root.app': { ... 
    }...

检查这些以获取更多详细信息:

  • Angularjs ui-router not reaching child controller
  • Angular UI Router - Nested States with multiple layouts