Como uso $rootScope
para armazenar variáveis em um controlador que desejo acessar posteriormente em outro controlador? Por exemplo:
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
});
Como eu faria isso?
Respostas:
Variáveis definidas no escopo raiz estão disponíveis para o escopo do controlador por herança prototípica.
Aqui está uma versão modificada da demo de @ Nitish que mostra a relação um pouco mais clara: http://jsfiddle.net/TmPk5/6/
Observe que a variável do rootScope é definida quando o módulo é inicializado e, em seguida, cada um dos escopos herdados obtém sua própria cópia, que pode ser definida independentemente (a
change
função). Além disso, o valor do rootScope também pode ser atualizado (achangeRs
função inmyCtrl2
)fonte
$scope.test = 'Some value'
, a$rootScope.test
mudança também?$rootScope
seja global (em todos os controladores), mas$scope
permaneça local no controlador. Se você usa$scope.test
em dois controladores diferentes, sabem que são duas variáveis diferentes se$rootScope.test
seria a mesma variável em todos os controladoresCompartilhar dados entre controladores é o que é muito bom para Fábricas / Serviços. Em suma, funciona mais ou menos assim.
Você pode ver um exemplo de trabalho neste violino: http://jsfiddle.net/mbielski/m8saa/
fonte
$rootScope
deve ser usado para compartilhar variáveis quando temos coisas como serviços e fábricas.DEMO
fonte
não encontro nenhuma razão para fazer isso $ scope.value = $ rootScope.test;
$ scope já é uma herança de protótipo de $ rootScope.
Por favor, veja este exemplo
agora você pode vincular essa variável de escopo em qualquer lugar na tag do aplicativo.
fonte
primeiro armazene os valores em $ rootScope como
$ rootScope é o pai de todos os $ scope, cada $ scope recebe uma cópia dos dados $ rootScope que você pode acessar usando o próprio $ scope.
fonte
Se é apenas "acesso em outro controlador", você pode usar constantes angulares para isso, o benefício é; você pode adicionar algumas configurações globais ou outras coisas que deseja acessar em todo o aplicativo
e acesse-o como:
(não testou)
mais informações: http://ilikekillnerds.com/2014/11/constants-values-global-variables-in-angularjs-the-right-way/
fonte
http://astutejs.blogspot.in/2015/07/angularjs-what-is-rootscope.html
fonte
Existem várias maneiras de conseguir essa:
1. Adicione
$rootScope
no.run
método2. Crie um serviço e acesse-o nos dois controladores.
fonte