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/#!/仪表板?'

现在它将起作用: