Angularjs ui路由器,无需在每次路由更改时执行控制器
Ui路由器示例配置:Angularjs ui路由器,无需在每次路由更改时执行控制器,angularjs,angular-ui-router,Angularjs,Angular Ui Router,Ui路由器示例配置: header: { templateUrl: 'header.tpl', controller: 'HeaderCtrl' }, sidebar: { templateUrl: 'sidebar.tpl', controller: 'SidebarCtrl' }, main: { templateUrl: 'main.tpl' } 网站以一个登录页面开始,该页面只有一个main视图。 应用程序中的所有其他页面都需要身
header: {
templateUrl: 'header.tpl',
controller: 'HeaderCtrl'
},
sidebar: {
templateUrl: 'sidebar.tpl',
controller: 'SidebarCtrl'
},
main: {
templateUrl: 'main.tpl'
}
网站以一个登录页面开始,该页面只有一个main
视图。应用程序中的所有其他页面都需要身份验证 问题: 每次我打开一个新路由,HeaderCtrl和SidebarCtrl都会被执行
是否有办法使SidebarCtrl和HeaderCtrl不会在每次路线更改时重新执行?是。您可以通过实现嵌套状态来实现这一点。在嵌套状态、父状态-控制器的情况下,指令只执行一次,并且在子状态发生变化时不会再次执行指令,除非您想要强制执行它们 对于嵌套状态,只需添加一个父状态,让我们说“app”带有一个模板,该模板将充当具有页眉和页脚控制器的容器-请参阅这些也可以是指令。以及具有ui视图的内容容器 子状态将类似于“app.child1”、“app.child2”等 请注意,子状态必须以“app.”开头,因为这是定义父子关系w.r.t.ui路由器的链接 如果您使用的是命名视图,则会像这样更新子状态,其中main是视图的名称/标签
views: { 'main@': 'settings.tpl' }
此设计将确保不会在每次状态更改时执行页眉和页脚控制器。页眉和页脚控制器也会被继承吗?或者我应该重新定义它们吗?是的,它们将在所有子状态上继承。请更新您的答案,并说明我们需要通过
main@
引用main
模板,否则它将不起作用。我们需要引用主状态而不是模板。我会更新。感谢UpdateEyes,但为了更新main
模板,我们必须使用main@