page navigationend cambiar angularjs

angularjs - navigationend - router events subscribe angular 4



AngularJS, resolver y proveedor desconocido. (3)

Entonces, esta pregunta fue sorprendentemente similar a la mía, que acabo de descubrir con la ayuda de la gente en el canal IRC Angular ... ¿está usted, por casualidad, configurando su controlador a través del controlador ng-controller ? Tuve:

<div ng-controller="myCtrl">

... cuando debería haber sido eliminado:

<div>

... porque estaba configurando el controlador en la resolución del enrutador. Eso es lo que estaba haciendo y estaba causando este mismo problema. Puedes ver más aquí:

https://stackoverflow.com/a/18305423/1306982

Tengo dos rutas con resolución. Va así:

.when(''/foos'', { templateUrl: ''views/foos.html'', controller: ''FoosCtrl'', resolve: { foo_list: [''$q'', ''$route'', ''$timeout'', ''$location'', ''Foos'', function($q, $route, $timeout, $location, Foos) { // postpone the execution var deferred_foo = $q.defer() Foos.getFoos({token:session_uid}, successCb) function successCb(list) { if(list[''status''] === 200) { deferred_foo.resolve(list) } else { alert(''Crashcrashcrash'') deferred_foo.reject("Something just wasn''t right") //$location.path(''maintenance'') } } return deferred_foo.promise }] } }) .when(''/r/:type/:bar_id'', { templateUrl: ''views/bar.html'', controller: ''BarsCtrl'', resolve: { bar: [''$q'', ''$route'', ''$timeout'', ''$location'', ''Bars'', function($q, $route, $timeout, $location, Bars) { // postpone the execution var deferred = $q.defer() Bars.getBar({type: bar_type}, successCb) function successCb(result) { if(result[''status''] === 200) { deferred.resolve(result) } else { alert(''Crashcrashcrash'') deferred.reject("Something just wasn''t right") $location.path(''foos'') } return deferred.promise }] } })

Entonces tengo dos controladores trabajando así:

App.controller(''FoosCtrl'', [''$scope'', ''$location'', ''Foos'', ''foo_list'', function($scope, $location, Foos, foo_list) {...} App.controller(''BarsCtrl'', [''$scope'', ''$routeParams'', ''$location'', ''Bars'', ''bar'', ''sharedService'', function($scope, $routeParams, $location, Bars, bar, sharedService) {...}

¿Alguien podría explicar por qué funciona Bar, pero Foo me da Error: Unknown provider: foo_listProvider <- foo_list ? He intentado reemplazar foo_list con un nombre diferente en caso de que camelCasing haya hecho algo pero no haya ayudado.


Solo como un aviso, tuve un problema similar que fue causado al agregar las variables de resolución como una dependencia al controlador y aún no he configurado la función de respuesta en $stateProvider.state() todavía.

Añadiendo la función de resolución arreglamos la dependencia faltante.
(Todavía no entiendo por qué, me alegraría si alguien pudiera compartir su conocimiento en los comentarios)


foo_list <: ¿se está cargando el archivo js para esto en su página html en una etiqueta de script? Es posible que cuando olvide incluir fábrica / servicio / controlador y en realidad haya olvidado incluirlo en una etiqueta de secuencia de comandos en la página html índice / aplicación (o requiera cuñas).

De acuerdo, vimos tu comentario y extendí la respuesta aquí porque es más fácil hacerlo aquí.

Su código donde declara que el controlador debe leer como

App.controller(''FoosCtrl'', [''$scope'', ''$location'', ''Foos'', /* comment out foo_list here*/ function($scope, $location, Foos, foo_list /* this remains */) { ... }

cuando la ruta cambia, las cosas que usted menciona en ''resolver'' se resolverían con ui-router. Pero es el lugar donde está declarando su FoosCtrl en el que no tiene un proveedor que resolver.

Inténtalo, tuve un caso similar como este la semana pasada.