Angularjs Angular和ui路由器-如何在父状态的命名视图中配置嵌套状态
我正在构建一个webapp,其中包含一些出现在每个“页面”上的元素,以及一个内容根据导航到的“页面”而变化的区域。为了实现这一点,我使用具有多个命名视图和嵌套状态的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: '/',
$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:'登录',
模板:“登录此处”
})