Javascript 在run语句中从何处捕获$location.search()变量?为了重建国家, 目标/预期
如果用户直接转到如下链接,则重建应用程序的状态:Javascript 在run语句中从何处捕获$location.search()变量?为了重建国家, 目标/预期,javascript,angularjs,url,angular-ui-router,Javascript,Angularjs,Url,Angular Ui Router,如果用户直接转到如下链接,则重建应用程序的状态:http://localhost:8080/app/#!/tag_id=5&ticker=GOOG 后果 应用程序当前仍然通过$urlRouterProvider重定向回/login,否则('/login') 在我的应用程序中,我使用ngCookies将$state(ui路由器)变量存储在cookie中 $rootScope.$on('$stateChangeSuccess', function(event, toState, toParams
http://localhost:8080/app/#!/tag_id=5&ticker=GOOG
后果
应用程序当前仍然通过$urlRouterProvider重定向回/login
,否则('/login')代码>
在我的应用程序中,我使用ngCookies
将$state
(ui路由器)变量存储在cookie中
$rootScope.$on('$stateChangeSuccess',
function(event, toState, toParams, fromState, fromParams) {
const shareUrl = () => {
// const base = 'https://www.tickertags.com/dashboard/#/';
const base = 'http://localhost:8080/app/#!/';
const cookie = $cookies.get('stateCookie');
console.log('state vars', $httpParamSerializer(JSON.parse(cookie)));
const parsedState = $httpParamSerializer(JSON.parse(cookie));
return `${base}${parsedState}`;
};
// console.log('state.current.name', $state.current.name)
const stateCookie = $cookies.get('stateCookie');
$cookies.putObject('stateCookie', $state.params);
console.log('shareUrl', shareUrl());
})
更改状态时:
日志“状态变量”将记录:state vars tag\u id=5&ticker=GOOG
日志'shareUrl'将记录:http://localhost:8080/app/#!/tag_id=5&ticker=GOOG
我试图先打印该链接的$location.search()结果。下面我在$stateChangeStart
eventListener中添加了一个新日志
.run(['$rootScope', '$location', '$state', '$cookies', '$httpParamSerializer',
function($rootScope, $location, $state, $cookies, $httpParamSerializer) {
$rootScope.$on("$stateChangeError", console.log.bind(console));
$rootScope.$on('$stateChangeStart',
function(event, toState, toParams, fromState, fromParams, options) {
const searchObject = $location.search();
console.log('searchObject', searchObject);
});
后果
我被重定向回登录,这是目前所期望的。但是我的searchObject仍然是空的
注意:我还在.run
内的第一行上放了一个断点。调试器在那里停止,我试图注销$location.search()
,虽然URL是正确的,但它仍然打印出一个空对象
当我刚刚注销$location
时,我确实看到了这一切:
我把const searchObject=$location.search()放在哪里代码>行,这样我就可以正确地捕获粘贴的URL,然后创建新的参数来运行$state。继续
重建状态?刚刚搞定
我需要在仪表板后添加?
:
const base='1〕http://localhost:8080/app/#!/仪表板?'代码>
现在它将起作用: