Angularjs Angular和ui路由器-如何在父状态的命名视图中配置嵌套状态

Angularjs Angular和ui路由器-如何在父状态的命名视图中配置嵌套状态,angularjs,view,nested,angular-ui-router,states,Angularjs,View,Nested,Angular Ui Router,States,我正在构建一个webapp,其中包含一些出现在每个“页面”上的元素,以及一个内容根据导航到的“页面”而变化的区域。为了实现这一点,我使用具有多个命名视图和嵌套状态的ui路由器。当我试图将一个状态嵌套在其父对象的一个命名视图中时,就会出现问题。我认为我没有正确地定位父视图中的命名视图,因为嵌套状态中没有显示任何内容 $stateProvider .state('stc', { abstract: true, url: '/',

我正在构建一个webapp,其中包含一些出现在每个“页面”上的元素,以及一个内容根据导航到的“页面”而变化的区域。为了实现这一点,我使用具有多个命名视图和嵌套状态的ui路由器。当我试图将一个状态嵌套在其父对象的一个命名视图中时,就会出现问题。我认为我没有正确地定位父视图中的命名视图,因为嵌套状态中没有显示任何内容

    $stateProvider
        .state('stc', {
            abstract: true,
            url: '/',
            views: {
                'shell': {
                     template: '<div ui-view="topbar"></div>' +
                               '<div ui-view="navbar"></div>' +
                               '<div ui-view="content"></div>'
                }
            }
        })
        .state('stc.sections', {
            url: '',
            views: {
                'topbar@stc': {
                    template: "<p>top bar</p>"
                },
                'navbar@stc': {
                    template: "<p>nav bar</p>"
                },
                'content@stc': {
                    template: '<div ui-view></div>'
                }
            }
        })
        .state('stc.sections.homepage', {
            url: '/',
            template: '<h1>Nested Home Page Content</h1>'
        });
$stateProvider
.州(“stc”{
摘要:没错,
url:“/”,
观点:{
“外壳”:{
模板:“”+
'' +
''
}
}
})
.州(‘标准条款’{
url:“”,
观点:{
'topbar@stc': {
模板:“顶栏

” }, 'navbar@stc': { 模板:“导航栏

” }, 'content@stc': { 模板:“” } } }) .state('stc.sections.homepage'{ url:“/”, 模板:“嵌套主页内容” });
很抱歉,我不知道如何定位父级的命名视图:
content@stc
这样我就可以根据url嵌套动态内容。在本例中,我尝试加载主页内容


是否需要一些特殊的符号来指向命名视图?

我最终从
stc.sections
配置中删除了行:
url:'
,并在“state.sections.homepage”配置中将
url:'/'
替换为
url:'
。现在,我可以使用以下方法为同级页面添加路由:

        .state('stc.sections.login', {
            url: 'login',
            controller: 'main.common.login as loginCtrl',
            template: require('./views/login.html')
        })
并在浏览器中使用URL访问它们,如

  • mydomain.com/
  • mydomain.com/login
  • mydomain.com/signup
修改代码

$stateProvider
    .state('stc', {
        abstract: true,
        url: '/',
        views: {
            'shell': {
                 template: '<div ui-view="topbar"></div>' +
                           '<div ui-view="navbar"></div>' +
                           '<div ui-view="content"></div>'
            }
        }
    })
    .state('stc.sections', {
        views: {
            'topbar@stc': {
                template: "<p>top bar</p>"
            },
            'navbar@stc': {
                template: "<p>nav bar</p>"
            },
            'content@stc': {
                template: '<div ui-view></div>'
            }
        }
    })
    .state('stc.sections.homepage', {
        url: '',
        template: '<h1>Nested Home Page Content</h1>'
    })
    .state('stc.sections.login', {
        url: 'login',
        template: '<h1>Login Here</h1>'
    })
$stateProvider
.州(“stc”{
摘要:没错,
url:“/”,
观点:{
“外壳”:{
模板:“”+
'' +
''
}
}
})
.州(‘标准条款’{
观点:{
'topbar@stc': {
模板:“顶栏

” }, 'navbar@stc': { 模板:“导航栏

” }, 'content@stc': { 模板:“” } } }) .state('stc.sections.homepage'{ url:“”, 模板:“嵌套主页内容” }) .state('stc.sections.login'{ url:'登录', 模板:“登录此处” })
我最终从
stc.sections
配置中删除了行:
url:“
,并在`state.sections.homepage config中用
url:”
替换了
url:“
。现在,我可以使用以下方法为同级页面添加路由:

        .state('stc.sections.login', {
            url: 'login',
            controller: 'main.common.login as loginCtrl',
            template: require('./views/login.html')
        })
并在浏览器中使用URL访问它们,如

  • mydomain.com/
  • mydomain.com/login
  • mydomain.com/signup
修改代码

$stateProvider
    .state('stc', {
        abstract: true,
        url: '/',
        views: {
            'shell': {
                 template: '<div ui-view="topbar"></div>' +
                           '<div ui-view="navbar"></div>' +
                           '<div ui-view="content"></div>'
            }
        }
    })
    .state('stc.sections', {
        views: {
            'topbar@stc': {
                template: "<p>top bar</p>"
            },
            'navbar@stc': {
                template: "<p>nav bar</p>"
            },
            'content@stc': {
                template: '<div ui-view></div>'
            }
        }
    })
    .state('stc.sections.homepage', {
        url: '',
        template: '<h1>Nested Home Page Content</h1>'
    })
    .state('stc.sections.login', {
        url: 'login',
        template: '<h1>Login Here</h1>'
    })
$stateProvider
.州(“stc”{
摘要:没错,
url:“/”,
观点:{
“外壳”:{
模板:“”+
'' +
''
}
}
})
.州(‘标准条款’{
观点:{
'topbar@stc': {
模板:“顶栏

” }, 'navbar@stc': { 模板:“导航栏

” }, 'content@stc': { 模板:“” } } }) .state('stc.sections.homepage'{ url:“”, 模板:“嵌套主页内容” }) .state('stc.sections.login'{ url:'登录', 模板:“登录此处” })