0

Mon application échoue avec l'erreur dans le titre. Cette erreur se produit lorsque je définis trop d'états pour mon routeur ui. Auparavant, quand j'ai posté ce problème, on m'a dit que c'est la même chose que l'erreur discutée par l'affichage, "Angulaire" état déjà défini "erreur après l'exécution concat/uglify". J'ai changé mon code comme indiqué par la poste, en l'enveloppant dans une fermeture. Après le changement, le code a continué à agir de la même manière. C'est-à-dire qu'avec tous les états définis, le code a échoué avec une erreur déclarée. Quand j'ai réduit le nombre d'états, le code s'est bien passé. J'ai inclus le code ci-dessous mais je montre seulement un état défini pour minimiser le code. Mon code actuel a 40 états et je vais plus que doubler le nombre d'états au moment où l'application est terminée. Chaque état a 6 vues. Le code commenté est ce que j'utilisais à l'origine. Le code non commenté est ce que je crois a été décrit comme la solution dans le post précédent. Appréciez si quelqu'un pourrait fournir des suggestions pour corriger ce code ou pour mieux architecturer l'application si c'est ce que je dois faire.

(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); 

Répondre

1

S'il vous plaît essayer cet exemple: cela fonctionne mon exemple

comprennent AngularJS bibliothèque:

<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> 

ajouter ng-app dans votre partie du corps html:

<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

j'ai fait des suggestions de modification, partagerai mon app.js existants en app.js et routes.js. J'ai ensuite ajouté routes.js au fichier de scripts. N'a pas fonctionné. Message d'erreur comme suit: Erreur non détectée: [$ injector: nomod] Le module 'app' n'est pas disponible! Vous avez soit mal orthographié le nom du module, soit oublié de le charger. Si vous enregistrez un module, assurez-vous de spécifier les dépendances comme deuxième argument. http://errors.angularjs.org/1.4.8/$injector/nomod?p0=app –

+0

Avec quelques ajustements mineurs, je suis en mesure de faire fonctionner cela, mais j'ai le même problème que mon code d'origine. C'est-à-dire que lorsque j'ajoute des états, j'atteins un seuil auquel l'erreur d'origine revient. D'autres suggestions? –

+0

http://stackoverflow.com/questions/30888486/angular-state-already-defined-error-after-running-concat-uglify. S'il vous plaît se référer ce lien mon être vous aider ... –