我有一个用HTML5 / JavaScript精心编写的前端Web应用程序,MVC由AngularJS框架使用UI-Router管理。
现在...我需要使用此模式通过单个应用程序来管理更多客户:
所有客户都有一个applicationName(System.String)
访问应用程序的URL是[domain] /:applicationName / [view state],例如:http://domain.com/MyName/login或http://domain.com/MyName/home/dashboard
因此,在Angular的引导文件的config函数中,我必须执行以下操作:
.state('home.dashboard', {
url: '/:applicationName/home/dashboard',
templateUrl: '/views/contents/dashboard.html'
});
因此问题是:applicationName是一个唯一名称,用于检索存储在数据库中的对应的applicationId(System.Guid)(此applicationId用于从数据库中检索对应的applicationName数据,因此用于所有请求)。
所以问题是:在解析状态url之前,我可以检索applicationName并向rest api发出请求,以获取对应的applicationId并将其存储在角度服务中;然后进入状态。
可能吗?如果是的话,我该怎么做?
非常感谢大家!
洛伦佐
最佳答案
我认为您应该在应用程序运行功能中使用$ locationChangeStart事件,您可以在其中从数据库中获取应用程序名称(使用服务/提供程序)。
app.run(["$rootScope", "$location", "$window",function ($rootScope, $location, $window){
$rootScope.$on("$locationChangeStart", function (event, next, current) {
alert($location.$$path);
});
}])