AngularJs: contrôleur est appelé à deux reprises par l'utilisation de $routeProvider
Module de voies:
var switchModule = angular.module('switchModule', []);
switchModule.config(['$routeProvider', function($routeProvider) {
$routeProvider.
when('/build-content', {templateUrl: 'build-content.html', controller: BuildInfoController});
}]);
Contrôleur:
function BuildInfoController($http, $scope){
alert("hello");
}
Html:
<html ng-app="switchModule">
...
<body>
<ul>
<li><a href="#build-content"/></a></li>
</ul>
<div class="ng-view"></div>
</body>
...
À chaque fois quand je clique sur le lien hypertexte ", le "BuildInfoController" sera appelé deux fois. Suis-je manqué quelque chose?
- N'build-content.html ont `ng-controller="BuildInfoController"? Si oui, essayez de le retirer.
- Pas une ng-controller comme vous l'avez dit. De toute façon, merci beaucoup. J'ai déjà réparé en utilisant camus de la solution.
- double possible de la Lutte contre AngularJS l'exécution de contrôleur de deux fois
- Je vais avoir un problème similaire, mais dans mon cas, le contrôleur est déclenché uniquement sur la page d'actualisation. Si je naviguez jusqu'à la page à partir d'un lien, le contrôleur ne se déclenche une fois, comme prévu. Cependant, si j'actualise la page, il se déclenche deux fois. Toutes les suggestions?
Vous devez vous connecter pour publier un commentaire.
J'ai eu le même problème , et il semble y avoir un bug stupide avec le routage. Il y a une sorte de redirection en cours.
pour le fixer , j'ai juste ajouté une barre oblique dans le href , comme :
J'espère que ça va arranger les choses pour vous aussi.
J'ai eu face d'un même problème aujourd'hui. J'avais ajouté le nom de contrôleur dans mon $routeProvider et aussi dans mon code html.
et de mon point de vue
Vous pouvez enlever le nom du contrôleur, soit à partir de votre point de vue ou à partir de votre routeprovider.
J'ai eu un problème similaire. J'ai trouvé l'ajout d'une barre oblique dans la route, mais pas dans le lien a fonctionné comme prévu.
Avec ce balisage
Et puis AngularJS va corriger l'URL dans le navigateur pour ce qui est défini dans l' $routeProvider.
Bizarrement le contraire qui semble trop de travail avec une barre oblique dans le lien et pas dans l'itinéraire. Il semble aussi longtemps que les barres obliques ne pas match du décide et le contrôleur ne sera pas appelé deux fois!
Le mien était d'avoir 2 ng-view directives. J'ai essayé pour l'envelopper, mais involontairement dupliqué:
Retiré l'emballage, il fixe.
Supprimer la
ng-controller
la directive à partir de votre modèle de pages s'il existe .J'ai eu le même problème et trouvé que si vous bootstrap vous angulaires à deux fois, vous pouvez avoir la même erreur.
Dans mon cas, j'ai eu
<body ng-app>
mais aussiangular.bootstrap(document,['app'])
et qui a causé le double de l'initialisation des contrôleurs.J'espère que cela peut faire gagner du temps à quelqu'un.
Un contrôleur peut être ajouté à plus d'un élément du DOM, ce problème peut se produire si cela a été fait par exemple :
J'ai eu de la déclaration de SomeController pour chaque vue partielle dans un seul état.
Qui ont causé des événements en double cuisson.
Espère que cela aide quelqu'un d'autre.
Moi aussi j'avais un problème similaire avec un customDirective et unitentionally dupliqué mon contrôleur.
Je l'ai résolu en supprimant ng-controller étiquette au niveau de la masse
son parce que vous avez de multiples ui-view
Même Ici
Le mien était d'avoir 2 ng-view directives.
enter code here
Supprimé le doublon c'est à dire ng-view, il fixe.