routeprovider otherwise mvc example error ejercicios ejemplo controller angularjs

controller - mvc - otherwise angularjs



AngularJs: el controlador se llama dos veces al usar $ routeProvider (11)

El mío fue el caso de tener 2 directivas ng-view. Intenté envolverlo, pero lo dupliqué involuntariamente:

<div class="ng-view"> <div ng-view></div> </div>

Se quitó la envoltura, se arregló.

Rutas del módulo:

var switchModule = angular.module(''switchModule'', []); switchModule.config([''$routeProvider'', function($routeProvider) { $routeProvider. when(''/build-content'', {templateUrl: ''build-content.html'', controller: BuildInfoController}); }]);

Controlador:

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

Cada vez que hago clic en el hipervínculo '''', se llamará ''BuildInfoController'' dos veces. ¿Me estoy perdiendo de algo?


Elimine la directiva ng-controller de sus páginas de plantilla si existe.


He tenido un problema similar. Encontré agregar una barra inclinada en la ruta, pero no en el enlace funcionó como se esperaba.

$routeProvider. when(''/build-content/'',...);

Con este marcado

<li><a href="/build-content">Content</a></li>

Y luego AngularJS corregirá la URL en el navegador a lo que se define en $ routeProvider.

Extrañamente, lo opuesto parece funcionar también con una barra inclinada en el enlace y no en la ruta. ¡Parece siempre que las barras posteriores no coincidan con las resoluciones y el controlador no se invocará dos veces!


Hoy tuve el mismo problema. Había agregado el nombre del controlador en mi $ routeProvider y también en mi html.

$routeProvider .when(''/login'', { controller: ''LoginController'', templateUrl: ''html/views/log-in.html'' })

y en mi opinión como

<div class="personalDetails" ng-controller="LoginController"> </div>

Puede eliminar el nombre del controlador de su vista o de su proveedor de ruta.


Same Here Mine era un caso de tener 2 directivas ng-view.

enter code here Se eliminó el duplicado, es decir, ng-view, se arregló.


Se puede agregar un controlador a más de un elemento del DOM, por lo que este problema puede ocurrir si esto se ha hecho, por ejemplo:

<div id="myDiv1" ng-controller="myController" ....></div> .... <div id="myDiv2" ng-controller="myController" ....></div>


Tuve el mismo problema y me di cuenta de que si le cortas dos veces el angular, puedes tener el mismo error.

En mi caso, tuve <body ng-app> pero también angular.bootstrap(document,[''app'']) y eso causó la inicialización doble de los controladores.

Espero que esto pueda ahorrarle algo de tiempo a alguien.


Tuve el mismo problema, y ​​parece que hay un error estúpido con el enrutamiento. Hay algún tipo de redirección pasando.

para arreglarlo, acabo de agregar una barra en el href, como:

<li><a href="#/build-content/"></a></li>

Espero que también arregle las cosas para ti.


Tuve la declaración de SomeController para cada vista parcial en un solo estado. Eso causó la duplicación de eventos por evento.

.state(''chat'', { url: ''/'', views: { ''content@'': { templateUrl: ''views/chat_wv1.html'', controller: ''ChatController'' }, ''form@'': { templateUrl: ''views/chat_wv_placeholder.html'', controller: ''ViewController'' }, ''sidePanel@'': { templateUrl: ''views/sidePanel_wv.html'' /* removing this part solved my issue*/ /*controller: ''ChatController''*/ } } })

Espero que esto ayude a alguien más.


Yo también tuve un problema similar con un controlador customDirective y unitentionally duplicado.

<html> <body ng-app="MyApp" ng-controller="MyDirectiveCtrl"> <my-directive></my-directive> </body> </html> angular.directive(''myDirectivie'', [function() { return { restrict: ''E'', controller: ''MyDirectiveCtrl'', ... } }]);

Lo resolví quitando la etiqueta ng-controller a nivel del cuerpo


es porque tienes múltiples ui-view