¿Cómo uso $rootScopepara almacenar variables en un controlador al que quiero acceder más tarde en otro controlador? Por ejemplo:
angular.module('myApp').controller('myCtrl', function($scope) {
var a = //something in the scope
//put it in the root scope
});
angular.module('myApp').controller('myCtrl2', function($scope) {
var b = //get var a from root scope somehow
//use var b
});
¿Cómo haría esto?

Respuestas:
Las variables establecidas en el alcance raíz están disponibles para el alcance del controlador a través de la herencia prototípica.
Aquí hay una versión modificada de la demostración de @ Nitish que muestra la relación un poco más clara: http://jsfiddle.net/TmPk5/6/
Observe que la variable rootScope se establece cuando el módulo se inicializa, y luego cada uno de los alcances heredados obtiene su propia copia que se puede configurar de forma independiente (la
changefunción). Además, el valor de rootScope también se puede actualizar (lachangeRsfunción enmyCtrl2)fuente
$scope.test = 'Some value', ¿$rootScope.testcambiará también?$rootScopees global (sobre todos los controladores) pero$scopesigue siendo local para el controlador. Si usa$scope.testdos controladores diferentes, sepa que son dos variables diferentes, ya$rootScope.testsea la misma variable en todos los controladoresCompartir datos entre controladores es para lo que las fábricas / servicios son muy buenos. En resumen, funciona algo como esto.
Puede ver un ejemplo de trabajo en este violín: http://jsfiddle.net/mbielski/m8saa/
fuente
$rootScopedebería usarse para compartir variables cuando tenemos cosas como servicios y fábricas.MANIFESTACIÓN
fuente
no encuentro ninguna razón para hacer esto $ scope.value = $ rootScope.test;
$ scope ya es un prototipo de herencia de $ rootScope.
Por favor vea este ejemplo
ahora puede vincular esta variable de alcance en cualquier lugar de la etiqueta de la aplicación.
fuente
primero almacene los valores en $ rootScope como
$ rootScope es el padre de todos los $ scope, cada $ scope recibe una copia de los datos de $ rootScope a los que puede acceder utilizando $ scope.
fuente
Si es solo "acceso en otro controlador", entonces puede usar constantes angulares para eso, el beneficio es; puede agregar algunas configuraciones globales u otras cosas a las que desea acceder a través de la aplicación
y luego accede a ella como:
(no probado)
Más información: http://ilikekillnerds.com/2014/11/constants-values-global-variables-in-angularjs-the-right-way/
fuente
http://astutejs.blogspot.in/2015/07/angularjs-what-is-rootscope.html
fuente
Hay varias formas de lograr esto: -
1. Añadir
$rootScopeen el.runmétodo2. Cree un servicio y acceda a él en ambos controladores.
fuente