eventos event angularjs

angularjs - event - No se puede llegar a $ rootScope



rootscope between controllers (3)

El siguiente archivo "funciona" (la sensación de que no arroja ningún error):

<!doctype html> <html ng-app="modx"> <script src="http://code.angularjs.org/angular-1.0.0rc7.js"></script> <script> angular.module("modx", [], function($routeProvider) { }); </script> </html>

pero esto

<!doctype html> <html ng-app="modx"> <script src="http://code.angularjs.org/angular-1.0.0rc7.js"></script> <script> angular.module("modx", [], function($routeProvider, $rootScope) { }); </script> </html>

da el error:

Error: proveedor desconocido: $ rootScope de modx
Archivo fuente: http://code.angularjs.org/angular-1.0.0rc7.js
Línea: 2491

WTF?


He encontrado que el siguiente "patrón" es muy útil:

MainCtrl.$inject = [''$scope'', ''$rootScope'', ''$location'', ''socket'', ...]; function MainCtrl (scope, rootscope, location, thesocket, ...) {

donde, MainCtrl es un controlador. No me siento cómodo confiando en los nombres de los parámetros de la función del Controlador haciendo una imitación uno a uno de las instancias por temor a que cambie los nombres y arruine las cosas. Prefiero usar explícitamente $ inject para este propósito.


No sugiero que use la sintaxis como lo hizo. AngularJs te permite tener diferentes funcionalidades como desees ( run , config , service , factory , etc.), que son más profesionales. En esta función ni siquiera tienes que inyectar eso por ti mismo como

MainCtrl.$inject = [''$scope'', ''$rootScope'', ''$location'', ''socket'', ...];

puedes usarlo, como sabes.


No puede pedir, por ejemplo, durante la fase de configuración; puede solicitar solo proveedores.

var app = angular.module(''modx'', []); // configure stuff app.config(function($routeProvider, $locationProvider) { // you can inject any provider here }); // run blocks app.run(function($rootScope) { // you can inject any instance here });

Consulte http://docs.angularjs.org/guide/module para obtener más información.