0

我的應用程序失敗,標題中出現錯誤。當我爲我的UI路由器定義了太多的狀態時,會發生此錯誤。以前,當我發佈這個問題時,我被告知這與發帖討論的錯誤相同,「Angular」狀態已經定義了「運行concat/uglify後出錯」。我改變了我的代碼,如帖子所示,將它封裝在封閉中。更改後,代碼繼續以相同的方式運行。也就是說,在所有定義的狀態下,代碼都會失敗並顯示錯誤。當我減少狀態的數量代碼運行良好。 我已經包含下面的代碼,但我只顯示一個狀態定義爲最小化代碼。我目前的代碼有40個狀態,並且在應用程序完成時,我的狀態數量會增加一倍以上。每個州有6個意見。評論的代碼是我最初使用的。未註釋的代碼是我相信在前一篇文章中被描述爲解決方案的代碼。 如果有人能夠提供修復此代碼的建議或者爲了更好地構建應用程序(如果這是我需要做的),請注意。

(function (angular) { 

angular 
    .module('app',['ngResource', 'ui.router','xeditable', 'inputDropdown']) 
    .config(function($logProvider, $stateProvider, $locationProvider, $urlRouterProvider){ 

// var app = angular.module('app',['ngResource', 'ui.router','xeditable', 'inputDropdown']); 
// angular.module('app').config(function($logProvider, $stateProvider, $locationProvider, $urlRouterProvider){ 
$logProvider.debugEnabled(true); 
var routeRoleChecks = { 
    admin: {auth: function(flAuth){ 
     return flAuth.authorizeCurrentUserForRoute('admin') 
    }}, 
    user: {auth: function(flAuth){ 
     return flAuth.authorizeAuthenticatedUserForRoute() 
    }} 
}; 

$locationProvider.html5Mode({ 
     enabled: true, 
     requireBase: false, //required to specify base of application in our HTML 
     rewriteLinks: true //Angular will rewrite URLs as necessary (add# to older browsers) 
}); 


$stateProvider 
    .state('home', { 
     url: '/', 
     views: { 
      'content-header': { 
       templateUrl: '/app/main/main-header', 
       controller: 'flMainCtrl', 
       caseInsensitiveMatch: true 
      }, 
      'content-banner': { 
       templateUrl: '/app/main/main-carousel', 
       controller: 'flMainCtrl', 
       caseInsensitiveMatch: true 
      }, 
      'content-main': { 
       templateUrl: '/app/games/game-searchList', 
       controller: 'flGameSearchButtonCtrl', 
       //controllerAs: 'games:id', 
       caseInsensitiveMatch: true 
      }, 
      'content-left': { 
       templateUrl: '/app/games/game-menu-left', 
       controller: 'flGameSearchButtonCtrl', 
       //controllerAs: 'games:id', 
       caseInsensitiveMatch: true 
      }, 
      'content-right': { 
       templateUrl: '/app/games/game-menu-right', 
       controller: 'flGameSearchButtonCtrl', 
       //controllerAs: 'games:id', 
       caseInsensitiveMatch: true 
      }, 
      'content-footer': { 
       templateUrl: '/app/main/main-footer', 
       controller: 'flMainCtrl', 
       caseInsensitiveMatch: true 
      } 
     } 
    }) 

    $urlRouterProvider.otherwise('home'); 
}); 

angular.module('app').run(function($rootScope, $location){ 
$rootScope.$on('$stateChangeError', function(evt, current, previous, rejection){ 
    if (rejection === 'not authorized'){ 
     $location.path('/'); 
    } 
}); 
}); 

})(window.angular); 

回答

1

請嘗試這個例子:這是我的工作例如

包括angularjs庫:

<script src="assets/js/angularjs-min.js"></script> 
<script src="assets/js/angular-ui-router.js"></script> 
<script src="app/app.js"></script> 
<script src="app/routes.js"></script> 

在HTML正文部分添加ng-app

<html lang="en" ng-app="myApp" ng-cloak=""></html> 

app.js

var app = angular.module("myApp", ['ui.router']); 

routes.js

app.config(function ($stateProvider, $urlRouterProvider) { 
$stateProvider 
.state("home", { 
    url: "/home", 
    templateUrl: './view/home.php', 
    controller: 'homeCtrl' 
}).state("login", { 
    url: "/login", 
    templateUrl: './view/login.php', 
    controller: 'loginCtrl' 
}); 
$urlRouterProvider.otherwise('home'); }); 
+0

我做了修改建議,拆分我現有的app.js到app.js和routes.js。然後我將routes.js添加到腳本文件中。不工作。錯誤消息如下:未捕獲錯誤:[$ injector:nomod]模塊'app'不可用!您拼錯了模塊名稱或忘記加載模塊名稱。如果註冊模塊確保您指定依賴關係作爲第二個參數。 http://errors.angularjs.org/1.4.8/$injector/nomod?p0=app –

+0

隨着一些小的調整,我能夠得到這個運行,但我有我的原代碼相同的問題。也就是說,當我添加狀態時,我達到了原始錯誤返回的閾值。還有其他建議嗎? –

+0

http://stackoverflow.com/questions/30888486/angular-state-already-defined-error-after-running-concat-uglify。請參考這個鏈接我幫你... –

相關問題