Javascript 使用ui路由器和AngularJS仅更改一个视图
假设你有一个网站有三条不同的路线,Javascript 使用ui路由器和AngularJS仅更改一个视图,javascript,angularjs,angular-ui,angular-ui-router,Javascript,Angularjs,Angular Ui,Angular Ui Router,假设你有一个网站有三条不同的路线,/news,/about,和/signup 新闻和关于是他们自己的“页面”,而注册只是一个覆盖,可以在/News或/about上切换 如果您访问/news或/about上的/signup,则在注册覆盖下仍然可以看到相应的页面。如果直接转到/signup,它会在下面显示站点的根目录(/news,为了清晰起见) 这可能吗?是否可以使用AngularJS和ui路由器(或AngularRouter?)拥有多个视图和各种路由,这些视图和路由可以更改一个视图,而另一个视图保
/news
,/about
,和/signup
新闻和关于是他们自己的“页面”,而注册只是一个覆盖,可以在/News
或/about
上切换
如果您访问/news
或/about
上的/signup
,则在注册覆盖下仍然可以看到相应的页面。如果直接转到/signup
,它会在下面显示站点的根目录(/news
,为了清晰起见)
这可能吗?是否可以使用AngularJS和ui路由器(或AngularRouter?)拥有多个视图和各种路由,这些视图和路由可以更改一个视图,而另一个视图保持不变
我看了一下这个链接:
但它所做的似乎只是为ui视图定义一个默认值,如果当前路由中没有声明任何值
设置非常基本:
<div class="main" ui-view="main"></div>
<div class="overlay" ui-view="overlay"></div>
我想通过url激活overlay
视图,而不更改main
中显示的内容。你不是说登录而不是注册吗?
是的,这是可能的。使用三种状态
$stateProvider.state("signup", {
url: "/signup",
views: {
"overlay": {
templateUrl: "signup.html",
controller: "SignupController"
},
"main": {
templateUrl: "news.html",
controller: "NewsController"
}
}
})
.state("news", {
url: "/news",
views: {
"overlay": {
templateUrl: "signup.html",
controller: "SignupController"
},
"main": {
templateUrl: "news.html",
controller: "NewsController"
}
}
})
.state("news", {
url: "/about",
views: {
"overlay": {
templateUrl: "signup.html",
controller: "SignupController"
},
"main": {
templateUrl: "about.html",
controller: "AboutController"
}
}
});
注册覆盖模板将在所有三种状态下加载。
如果已加载注册URL(注册状态),
如果用户未登录,则显示覆盖
否则去新闻状态
如果用户直接转到新闻或关于URL,
如果用户未登录,则显示覆盖
否则不显示覆盖
您可以使用状态解析检查用户是否登录,然后隐藏/显示它