gpt4 book ai didi

javascript - $state.go 在 app.run 中的 $stateChangeStart 内不起作用

转载 作者:行者123 更新时间:2023-12-03 07:19:24 25 4
gpt4 key购买 nike

注意:这是一个示例代码,window.has_redirected 只是为了让问题更容易。

此代码不会重定向到 dashboard

我在网上看到它不起作用的原因是 $state 还没有准备好。但是我在网上看到的教程与此非常相似。

我该如何解决?

(function(){
"use strict";

angular.module('app.routes').config( function($stateProvider, $urlRouterProvider ) {

$urlRouterProvider.otherwise('/');

$stateProvider
.state('login',{
url: '/',
...
})
.state('dashboard', {
url: '/dashboard',
...
});


} ).run( function( $rootScope, Users, $state ) {
$rootScope.$on( "$stateChangeStart", function(event, toState, toParams
, fromState, fromParams){

if ( !window.has_redirected ){
window.has_redirected = true;
window.console.log('going to dashboard');
$state.go('dashboard');
}

});
} );
})();

最佳答案

a working plunker

你快到了……我们真正需要的是停止执行流程:

event.preventDefault();

这将停止当前状态更改,并将重定向 ($state.go()):

$rootScope.$on( "$stateChangeStart", function(event, toState, toParams
, fromState, fromParams){

// I would always check if we are not already on the way
// to the "redirection" target.
var isGoingToDashboard = toState.name === "dashboard";
if(isGoingToDashboard)
{
return;
}

// this remains
if ( !window.has_redirected ){
window.has_redirected = true;
console.log('going to dashboard');

// HERE is the essential breaker of the execution
event.preventDefault();
$state.go('dashboard');
}
});

查看action here

关于javascript - $state.go 在 app.run 中的 $stateChangeStart 内不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30247273/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com