我们可以为单页应用程序提供两个入口点吗?
Can we provide two entry points for single page application?
我正在开发单页应用程序。我们的第一个页面是登录页面,我们在其中输入用户名和密码。
现在客户给了我们一个新的要求,为管理员用户提供一个单独的登录页面。管理员登录页面应该有一个额外的下拉列表。
他们需要我们的应用程序的两个 URL。一种用于管理员用户,另一种用于普通用户。
据我所知,我们不能在单页应用程序中添加两个 HTML 页。只能更改内部视图。但是我如何确定应该显示哪个登录视图。
我想不出办法来做到这一点。请提供任何指导。
您可以像这样为登录路由设置一个动态路由器:
var Router = Backbone.Router.extend({
routes: {
"login/:id": "login" // #login/user or #login/admin
},
login: function(id, page) {
if(id === "user"){
//render user login view
}else if(id === "admin"){
//render admin login view
}
}
});
更新
这是link
我已经根据我的项目框架修改了你的代码。
我在应用程序初始化期间给出了以下内容:
var mode = location.hash.substring(1).toLowerCase();
if (mode == "admin") {
sessionStorage.isAdmin = true;
}
else {
sessionStorage.isAdmin = false;
}
在渲染视图时我给出了以下代码:
if (sessionStorage.isAdmin == "true") {
var template = _.template(adminTemplate);
}
else {
var template = _.template(loginTemplate);
}
我希望这个方法是正确的:)
我正在开发单页应用程序。我们的第一个页面是登录页面,我们在其中输入用户名和密码。
现在客户给了我们一个新的要求,为管理员用户提供一个单独的登录页面。管理员登录页面应该有一个额外的下拉列表。
他们需要我们的应用程序的两个 URL。一种用于管理员用户,另一种用于普通用户。
据我所知,我们不能在单页应用程序中添加两个 HTML 页。只能更改内部视图。但是我如何确定应该显示哪个登录视图。
我想不出办法来做到这一点。请提供任何指导。
您可以像这样为登录路由设置一个动态路由器:
var Router = Backbone.Router.extend({
routes: {
"login/:id": "login" // #login/user or #login/admin
},
login: function(id, page) {
if(id === "user"){
//render user login view
}else if(id === "admin"){
//render admin login view
}
}
});
更新
这是link
我已经根据我的项目框架修改了你的代码。
我在应用程序初始化期间给出了以下内容:
var mode = location.hash.substring(1).toLowerCase();
if (mode == "admin") {
sessionStorage.isAdmin = true;
}
else {
sessionStorage.isAdmin = false;
}
在渲染视图时我给出了以下代码:
if (sessionStorage.isAdmin == "true") {
var template = _.template(adminTemplate);
}
else {
var template = _.template(loginTemplate);
}
我希望这个方法是正确的:)