簡體   English   中英

UI路由器FromState始終為^,無限循環

[英]Ui-router FromState is always ^, infinite loop

我只給$ state.go打電話一次。 在第一次調用$ state.go之后,頁面會不斷刷新並調用$ stateChangeStart。 我懷疑它與StateProvider配置有關。 關於可能出什么問題的任何指示?

這是問題的gif圖像,我認為是下面的原因: http : //i.giphy.com/3o85xGdxHnkanVecgM.gif

angular.module('ticketingSystemApp', ['ui.router', 'ngCookies', 'ticketingSystemApp.filters', 'ticketingSystemApp.directives', 'ticketingSystemApp.controllers', 'ticketingSystemApp.services'])
.run(['$state',  '$rootScope', function ($state, $rootScope) {
    $rootScope.$on('$stateChangeStart', function (event, toState, toParams, fromState, fromParams) {
        alert("ToState=" + toState.name + " FromState=" + fromState.name + " url=" + fromState.Url);

        if (($rootScope.username == null || $rootScope.password == null) && toState.name !== "login") {
            $state.go("login");
            e.preventDefault();
        }  else if ($state.name === "") {
            $state.go('userpanel');
            e.preventDefault();
        } 
    });
    }
]);



    .config([
        '$stateProvider', '$urlRouterProvider', '$locationProvider', function($stateProvider, $urlRouterProvider, $locationProvider) {
            $locationProvider.hashPrefix('!').html5Mode(true);
            // UI States, URL Routing & Mapping. For more info see: https://github.com/angular-ui/ui-router
            // ------------------------------------------------------------------------------------------------------------
            $stateProvider
                .state('login', {
                    url:'/login',
                    views: {
                        "mainContent": {
                            templateUrl: '/Account/Login'
                        }
                    }

                })
                .state('userpanel', {
                    url:'/userpanel',
                    views: {
                        "mainContent": {
                            templateUrl: '/UserPanel'
                        }
                    }

                });

            //We don't know where we are. Go to user panel.
            $urlRouterProvider.otherwise(function ($injector, $location) {
                var $state = $injector.get('$state');

                if ($state.name === undefined) {
                    $state.go('userpanel');
                    return;
                }

            });
        }
    ])

愚蠢的錯誤-如果遇到此問題,請記住在服務器端頁面上調用TemplateUrl將導致該服務器端頁面呈現,而后者又將調用母版頁面呈現。

因此,如果您在母版頁中定義了角度腳本,則使用上面的代碼會破壞它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM