variable javascript angularjs scope rootscope

javascript - variable - rootscope between controllers



La variable AngularJS $ rootScope existe, pero no es accesible (2)

Establecí una variable $ rootScope en uno de mis módulos y ahora quiero acceder a esa misma $ raíz de raíz en otro módulo. Hasta ahora puedo ver que en ambos módulos la variable se ha configurado correctamente, pero cuando intento acceder a la variable en $ rootScope, solo me sale indefinido.

¿Cómo puedo acceder a esta variable sin hacer una solución de fábrica / servicio? La variable es realmente simple y $ rootScope debería ser suficiente para lo que necesito. He puesto un código de muestra genérico a continuación para ilustrar el problema:

file1.js

var app = angular.module(''MyApp1'', []); app.controller(''Ctrl1'', [''$scope'', ''$rootScope'', function($scope, $rootScope) { $scope.myFunc = function() { $rootScope.test = 1; } }

file2.js

var app = angular.module(''MyApp2'', []); app.controller(''Ctrl2'', [''$scope'', ''$rootScope'', function($scope, $rootScope) { $scope.need_to_access_this = $rootScope.test; // undefined console.log($rootScope); // returns JS object w/ test property set to 1 }


En Ctrl1 el valor $ rootScope.test se establece dentro de $ scope.myFunc.

El problema es que no está llamando a esa función, por lo que la propiedad de test en $ rootScope nunca se establece.

$scope.myFunc(); llamar a $scope.myFunc(); en Ctrl1 o set $rootScope.test = 1; dirrectly en el controlador:

app.controller(''Ctrl1'', [''$scope'', ''$rootScope'', function($scope, $rootScope) { $scope.myFunc = function() { $rootScope.test = 1; }; $scope.myFunc(); }

o

app.controller(''Ctrl1'', [''$scope'', ''$rootScope'', function($scope, $rootScope) { $rootScope.test = 1; }

EDITAR:

Las sugerencias anteriores siguen siendo válidas, por lo tanto, debe llamar a myFunc ().

Pero el problema con su código es que Ctrl1 pertenece a MyApp1 y Ctrl2 pertenece a MyApp2 .

Cada aplicación tiene un alcance de raíz único ( documentos aquí )

Deberá crear Ctrl2 como controlador de MyApp1 :

angular.module(''MyApp1'') .controller(''Ctrl2'', [''$scope'', ''$rootScope'', function($scope, $rootScope) { $scope.need_to_access_this = $rootScope.test; // undefined console.log($rootScope); // returns JS object w/ test property set to 1 }]);


Simplemente me quedé atrapado en el mismo problema cuando descubrí que había definido esas propiedades para $ rootScope antes de que se carguen los controladores o los servicios. Entonces, lo que hice fue establecer valores iniciales cuando se ejecuta la aplicación. En tu caso, será como:

app.run(function($rootScope){ $rootScope.test="variable"; })

`