toState.Url值不是嵌套状态的绝对哈希值
toState.url value is not an absolute hash for nested states
我试图在$stateChangeStart
事件中获得toState
对象的url
状态basic.tasks
:
$rootScope.$on("$stateChangeStart", function (event, toState, toParams, fromState, fromParams) {
...
console.log(toState.name); // > basic.tasks
console.log(toState.url); // > /tasks
...
}
状态配置:
$stateProviderRef
.state('basic',{
url: '/b',
template: require('source/basic/templates/basic.html'),
controller: 'BasicController',
abstract: true
})
.state('basic.tasks', {
url: '/tasks',
template: require('source/basic/templates/tasks/tasks.html'),
controller: 'TasksController',
})
toState的值。url是/tasks
而不是/b/tasks
。有没有办法得到完整的哈希包括父状态。
我尝试了$window.location.hash
,但它只给出了fromState
的完整哈希路径,因为它不会更新,直到状态改变完成。
没有简单的方法来做到这一点,除非你只是添加父状态到url,但如果你正在寻找一个更动态的方式,那么这可能是一个选择。我不确定你是否在你的url中有标签(通常它在那里,在这里我们使用它只是为了regexp删除标签-但它看起来像这样http://localhost:8100/#/app在localhost),但如果你这样做,你可以尝试这样的东西:
$rootScope.$on("$stateChangeStart", function (event, toState, toParams, fromState, fromParams) {
var href = $state.href(toState.name);
var regexp = new RegExp('#','g');
href = href.replace(regexp, '');
console.log(href);
});
如果你的url中有一些状态的参数,你可以用toParams
将它们添加到绝对url中,因为stateChangeStart
上的这个函数不会将参数添加到url中。它将直接在stateChangeSuccess
上工作。
正如Ganesh Matkam在评论部分所说,实际上有一个简单的解决方案,可以将stateParams包含到url中。就像这样简单:
$rootScope.$on("$stateChangeStart", function (event, toState, toParams, fromState, fromParams) {
var href = $state.href(toState.name, toParams);
var regexp = new RegExp('#','g');
href = href.replace(regexp, '');
console.log(href);
});
相关文章:
- 在Javascript中实现对哈希值的暴力攻击
- 用户单击带有哈希值的链接以访问该页面,如果禁用Javascript会发生什么情况
- 要发送到控制器的 HREF 链接中的哈希值
- 使用 JavaScript 计算 Blob 的哈希值
- JavaScript 文件哈希值与文件的一部分一起生成
- JavaScript 隔离哈希值
- JavaScript 获取以前的哈希值
- 设置使用 window.open() 打开的空白页的哈希值
- Chrome 不返回哈希值
- Javascript 使用哈希值重新加载页面
- 为什么从其他网络返回会保留最后一个哈希值,同时显示第一个哈希值的内容
- 来自 Javascript 和 PHP 的不同哈希值
- 使用Javascript从url中获取空哈希值
- 如何使用JS重定向到具有哈希值的引用URL
- 单击一页滚动菜单时更改URL哈希值
- 是否可以在Mustache中基于哈希值切换模板部分
- 哈希值和后退/下一步按钮
- javascript哈希值验证
- 如何将哈希值转换为数组
- toState.Url值不是嵌套状态的绝对哈希值