Escopo AngularJS
- Página Anterior Controladores AngularJS
- Próxima Página Filtros AngularJS
O escopo (scope) é a parte de ligação entre HTML (visão) e JavaScript (controlador).
O escopo é um objeto que possui propriedades e métodos disponíveis.
O escopo está disponível tanto para a visão quanto para o controlador.
Como usar o escopo?
Quando você cria um controlador no AngularJS, você vai $scope
Objeto passado como parâmetro:
Exemplo
As propriedades criadas no controlador podem ser referenciadas na visão:
<div ng-app="myApp" ng-controller="myCtrl"> <h1>{{carname}}</h1> </div> <script> var app = angular.module('myApp', []); app.controller('myCtrl', function($scope) { $scope.carname = "Volvo"; }); </script>
ao adicionar no controlador}} $scope
ao adicionar atributos ao objeto, a visão (HTML) pode acessar essas propriedades.
Na visão, você não usa $scope
Prefixo, você precisa referenciar apenas um nome de atributo, por exemplo {{carname}}
。
Entender o escopo
Se considerarmos o aplicativo AngularJS composto pelos seguintes componentes:
- Visão, que é o HTML.
- Modelo, que é os dados disponíveis para a visão atual.
- Controlador, que é uma função JavaScript, usada para criar/alterar/excluir/controlar dados.
Portanto, o escopo é o modelo.
O escopo é um objeto JavaScript que possui atributos e métodos, esses atributos e métodos estão disponíveis para a visão e o controlador.
Exemplo
Se você fez uma alteração na visão, o modelo e o controlador serão atualizados:
<div ng-app="myApp" ng-controller="myCtrl"> <input ng-model="name"> <h1>Meu nome é {{name}}</h1> </div> <script> var app = angular.module('myApp', []); app.controller('myCtrl', function($scope) { $scope.name = "Bill Gates"; }); </script>
Entenda seu escopo
É importante entender o escopo que você está lidando a qualquer momento.
Nos dois exemplos acima, há apenas um escopo, então entender seu escopo não é um problema, mas para aplicativos maiores, algumas partes do DOM HTML podem apenas acessar alguns escopos.
Exemplo
Quando se lida com a diretiva ng-repeat, cada repetição pode acessar o objeto repetido atual:
<div ng-app="myApp" ng-controller="myCtrl"> <ul> <li ng-repeat="x in names">{{x}}</li> </ul> </div> <script> var app = angular.module('myApp', []); app.controller('myCtrl', function($scope) { $scope.names = ["Emil", "Tobias", "Linus"]; }); </script>
Cada <li>
Os elementos podem acessar o objeto repetido atual, neste exemplo uma string, usando x
para referência.
escopo raiz
Todos os aplicativos têm um $rootScope
, que está contido em ng-app
O escopo criado no elemento HTML da diretiva.
O rootScope está disponível em todo o aplicativo.
Se uma variável tiver o mesmo nome no escopo atual e no rootScope (rootScope), o aplicativo usará a variável do escopo atual.
Exemplo
O escopo do controlador e o rootScope possuem uma variável chamada "color":
<body ng-app="myApp"> <p>A cor favorita do rootScope:</p> <h1>{{color}}</h1> <div ng-controller="myCtrl"> <p>A faixa da cor favorita do controlador:</p> <h1>{{color}}</h1> </div> <p>A cor favorita do rootScope ainda é:</p> <h1>{{color}}</h1> <script> var app = angular.module('myApp', []); app.run(function($rootScope) { $rootScope.color = 'blue'; }); app.controller('myCtrl', function($scope) { $scope.color = "red"; }); </script> </body>
- Página Anterior Controladores AngularJS
- Próxima Página Filtros AngularJS