【发布时间】:2015-12-03 12:42:00
【问题描述】:
使用 AngularJs 和 UI-Router 为多租户前端应用程序设置路由。
例如,当用户键入以下 URL 时,应为 userxyz 加载仪表板,必须通过会话在用户的浏览器中维护该参数,以便用户应该能够浏览其他超链接在应用程序中。
http://servername.com/#/dashboard/userxyz
我正在努力实现这一点,我看过一些教程但无法理解。
这是我的路由配置代码。
(function () {
'use strict';
app.config(["$stateProvider", "$urlRouterProvider",
function ($stateProvider, $urlRouterProvider) {
$stateProvider
.state("dashboard", {
url: "/dashboard/{tenantid}",
templateUrl: "app/components/dashboard/dashboardView.html",
controller: "DashboardController"
})
.state("people", {
url: "/people/{tenantid}",
templateUrl: "app/components/people/peopleView.html",
controller: "PeopleController"
})
.state("contact", {
url: "/contact/{tenantid}",
templateUrl: "app/components/contact/contactView.html",
controller: "ContactController"
})
$urlRouterProvider.otherwise("/dashboard/{tenantid}");
}]);
})();
在我的 index.html 中,我有以下代码在 ui-view 中显示状态:
<div class="row" ui-view>
</div>
而且,我确实设法使用 ui-sref 设置了超链接,具体如下:
<a ui-sref="dashboard">Home</a>
<a ui-sref="people">People</a>
<a ui-sref="contact">Contact</a>
【问题讨论】:
-
为什么不将tenantid保存在会话或本地存储中?
-
我不介意尝试一下!会话或本地存储将存储在浏览器中,直到浏览器关闭?如果是的话,你到底推荐什么?顺便说一句,我没有此应用程序的登录页面,可能也没有。这是一个面向客户端的应用程序。
-
sessionStorage 将一直存在,直到您关闭选项卡或浏览器,但 localStorage 会在此之后声明,请明智地使用您需要的内容:D
-
我尝试从 'ngStorage' 配置 '$localStorage' 服务,但效果不佳。单击超链接时,该值将被重置。如果你有时间,你能给我举个例子吗? :)
标签: javascript angularjs routes angular-ui-router angular-ui