在Angularjs中,ui-router访问状态url开头的参数
angularjs, ui-router access to parameter at the beginning in the state url
我有一个完全用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
.state('home.dashboard', {
url: '/:applicationName/home/dashboard',
templateUrl: '/views/contents/dashboard.html'
});
所以问题是:applicationName是检索存储在数据库中的对应applicationId (System.Guid)的唯一名称(此applicationId用于从数据库检索对应applicationName数据,因此用于所有请求)。
那么问题来了:在解析状态url之前,我能不能检索到applicationName,然后向rest api请求获取对应的applicationId,并将其存储在angular服务中?
是可能的吗?如果是,我该怎么做?
非常感谢大家!
洛伦佐
我认为你应该在app运行函数中使用$locationChangeStart事件,在那里你可以从数据库(使用service/provider)中获取应用程序名称。
app.run(["$rootScope", "$location", "$window",function ($rootScope, $location, $window){
$rootScope.$on("$locationChangeStart", function (event, next, current) {
alert($location.$$path);
});
}])
这可以通过多种方式实现。不过我有个建议,
- 有默认路由,写控制器
- 在控制器内部,请确保调用API并获得应用程序id
- 在控制器中你可以执行$state.go()看到的:https://github.com/angular-ui/ui-router/wiki/URL-Routing using-parameters-without-specifying-them-in-state-urls
相关文章:
- 如何使用url加载程序在webpack中导入多个图像
- 使用php或javascript从facebook相册URL中删除多余的部分
- 当URL以m.(网站).com开头时,浏览器需要自行调整大小
- Greasemonkey - 如何在以特定字符串开头的页面上查找并打开 aν URL
- 为什么使用MEAN.js应用程序'URL以#开头
- 正则表达式,用于匹配字符串开头的协议相对 URL
- jquery 正则表达式修剪 URL 字符串的开头和结尾
- 缩短 URL 以保留开头和结尾(Firebug “Net” 面板样式)
- 花式框 - URL 以“/”开头的语法错误
- 如何验证正斜杠并将其转换为 url 的开头
- 当将 JavaScript 与 Webpack 捆绑在一起时,require/import URL 开头的 @ 符号是什
- 删除URL开头的字符串
- 我怎么能在一个URL中有两种类型的参数,其中一种以“”开头#"而另一个以“0”开头&"并且不替
- 在正则表达式、javascript中匹配不同的url开头
- 匹配URL的Regex以子域开头,而不是“”;www”;
- 主干网是否可以创建一个与所有以某个东西开头的url匹配的路由
- 在Angularjs中,ui-router访问状态url开头的参数
- 正则表达式,查找不以="开头的URL's
- 在Javascript字符串中的url开头和结尾插入一个字符
- CQ:为什么jquery在我的web服务url的开头添加/ajax