Expressões AngularJS: Array, Objetos, $eval, Strings
⚡ Resumo Inteligente
As expressões do AngularJS são fragmentos de código colocados entre chaves duplas que vinculam dados diretamente a um modelo. Elas avaliam números, strings, objetos e arrays, e a função `$eval` realiza a mesma avaliação de dentro de um controlador.

O que são expressões AngularJS?
Expressões são variáveis escritas entre chaves duplas. {{ }}Eles são muito usados no AngularJS e aparecem em vários tutoriais anteriores desta série.
⚠️ Aviso de suporte: AngularJS alcançou fim da vida em 31 de dezembro de 2021 e não recebe mais patches ou correções de segurança. A sintaxe abaixo permanece válida para a manutenção de aplicações AngularJS 1.x existentes; novos projetos devem usar a versão moderna. Angular, onde ainda existem chaves de interpolação, mas ng-init e $eval não.
Explique as expressões do AngularJS com um exemplo.
As expressões do AngularJS são escritas entre chaves duplas, como em {{expression}}.
Sintaxe: Um exemplo simples de uma expressão é {{5 + 6}}.
As expressões do AngularJS vinculam dados ao HTML da mesma forma que a diretiva ng-bind, e o AngularJS exibe os dados exatamente onde a expressão é colocada.
Neste exemplo, mostramos uma simples adição de números como uma expressão.
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Event Registration</title> </head> <body> <script src="https://code.angularjs.org/1.8.3/angular.min.js"></script> <h1>Guru99 Global Event</h1> <div ng-app=""> Addition : {{6+9}} </div> </body> </html>
Code Explicação:
- A diretiva ng-app está em branco, o que significa que nenhum módulo fornece controladores. directivasou serviços para esta página.
- Uma expressão simples soma dois números.
Saída:
A soma de 9 e 6 é realizada e o resultado, 15, é exibido.
AngularJS Numbers
Expressões funcionam com números. Este exemplo multiplica duas variáveis numéricas. margin e profite exibe o produto.
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Event Registration</title> </head> <body> <script src="https://code.angularjs.org/1.8.3/angular.min.js"></script> <h1>Guru99 Global Event</h1> <div ng-app="" ng-init="margin=2;profit=200"> Total profit margin {{margin*profit}} </div> </body> </html>
Code Explicação:
- A diretiva ng-init define variáveis e seus valores na própria view, de forma semelhante às variáveis locais em qualquer aplicativo. linguagem de programação. Aqui
margineprofitsão declarados e atribuídos. - A expressão então multiplica essas duas variáveis locais.
Saída:
A multiplicação de 2 por 200 é realizada e o produto, 400, é exibido.
Sequências AngularJS
Expressões também funcionam com strings. Este exemplo define firstName e lastName e exibe ambos.
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Event Registration</title> </head> <body> <script src="https://code.angularjs.org/1.8.3/angular.min.js"></script> <h1>Guru99 Global Event</h1> <div ng-app="" ng-init="firstName='Guru';lastName='99'"> First Name : {{firstName}}<br> Last Name : {{lastName}} </div> </body> </html>
Code Explicação:
- A diretiva ng-init define
firstNamecom o valor “Guru"ElastNamecom o valor “99”. - As expressões
{{firstName}}e{{lastName}}Leia essas variáveis e exiba-as na visualização.
Saída:
Ambos os valores aparecem na tela.
Objetos AngularJS
As expressões funcionam com JavaScript objetos, que consistem em pares nome-valor. A sintaxe de um JavaO objeto Script tem a seguinte aparência:
var car = {type: "Ford", model: "Explorer", color: "White"};
Este exemplo define um person objeto que contém dois pares chave-valor, firstName e lastName.
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Event Registration</title> </head> <body> <script src="https://code.angularjs.org/1.8.3/angular.min.js"></script> <h1>Guru99 Global Event</h1> <div ng-app="" ng-init="person={firstName:'Guru',lastName:'99'}"> First Name : {{person.firstName}}<br> Last Name : {{person.lastName}} </div> </body> </html>
Code Explicação:
- A diretiva ng-init define o objeto
personcom os pares chave-valorfirstNamedefinido como “Guru"ElastNamedefinido como “99”. - As expressões
{{person.firstName}}e{{person.lastName}}Leia esses membros. Como eles pertencem ao objeto, a notação de ponto é necessária para acessar seus valores.
Saída:
Os valores de firstName e lastName aparecer na tela.
Matrizes AngularJS
Expressões funcionam com matrizes. Este exemplo define uma matriz que armazena as notas de um aluno em três disciplinas e exibe cada valor.
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Event Registration</title> </head> <body> <script src="https://code.angularjs.org/1.8.3/angular.min.js"></script> <h1>Guru99 Global Event</h1> <div ng-app="" ng-init="marks=[1,15,19]"> Student Marks<br> Subject1 : {{marks[0]}}<br> Subject2 : {{marks[1]}}<br> Subject3 : {{marks[2]}} </div> </body> </html>
Code Explicação:
- A diretiva ng-init define o array
markscom os três valores 1, 15 e 19. - Expressões da forma
marks[index]Leia cada elemento.
Saída:
As marcas definidas na matriz são exibidas.
Capacidades e limitações da expressão AngularJS
Capacidades
- As expressões do AngularJS se assemelham JavaExpressões de script compartilham grande parte do mesmo poder e flexibilidade.
- Onde JavaO script gera um ReferenceError ou TypeError em uma propriedade indefinida; a avaliação do AngularJS é tolerante e retorna undefined ou null.
- Os filtros podem ser aplicados dentro de uma expressão para formatar os dados antes de serem exibidos.
- O operador ternário é suportado, então
{{ isReady ? 'Yes' : 'No' }}é válido.
Limitações
- Laços e tratamento de exceções não podem ser usados dentro de uma expressão AngularJS. A lógica condicional é limitada ao operador ternário;
ifNão há declarações disponíveis. - Não é possível declarar funções em uma expressão, nem mesmo dentro de uma diretiva ng-init.
- Expressões regulares não podem ser criadas dentro de outra expressão. Uma expressão regular é uma combinação de símbolos e caracteres usada para encontrar correspondências em sequências de caracteres, como...
.*\.txt$, e tais literais são rejeitados. - O operador vírgula (
,) e o modelovoidOperadores não são permitidos.
ng-bind vs. Chaves de Expressão: Qual usar?
Double As chaves e a diretiva ng-bind produzem o mesmo resultado renderizado, então a escolha entre elas parece arbitrária. Mas não é. As duas se comportam de maneira diferente no instante anterior ao término do carregamento do AngularJS, e essa diferença é visível para quem usa a página.
| Aspecto | {{ expression }} | ng-bind |
|---|---|---|
| Escrito em | Conteúdo do elemento | Um atributo de elemento |
| Antes do AngularJS carregar | Os aparelhos ortodônticos brutos aparecem rapidamente na tela. | Nada é mostrado |
| legibilidade | Maior — o valor se mantém em linha | Lower — o valor está oculto em um atributo |
| Vários valores por elemento | Sim | Não, apenas uma ligação. |
| Encadernação única | Sim com {{::value}} |
Sim com ng-bind="::value" |
A breve aparição de chaves brutas é conhecida como o "flash de conteúdo não interpolado" e ocorre porque o navegador renderiza a marcação antes que o AngularJS a compile. Use `ng-bind` ou adicione a diretiva `ng-cloak` para conteúdo visível acima da dobra. As chaves continuam sendo a opção mais clara e legível em todos os outros casos, principalmente quando vários valores aparecem dentro de um mesmo elemento.
Diferença entre expressão e $eval
O $eval A função avalia expressões de dentro do controlador. As expressões são avaliadas na visualização, enquanto $eval Avalia no código do controlador.
Este exemplo usa $eval Somar dois números e colocar o resultado no objeto de escopo para que a visualização possa exibi-lo.
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Event Registration</title> </head> <body> <script src="https://code.angularjs.org/1.8.3/angular.min.js"></script> <div ng-app="sampleApp" ng-controller="AngularController"> <h1>Guru99 Global Event</h1> {{value}} </div> <script> var sampleApp = angular.module('sampleApp', []); sampleApp.controller('AngularController', function($scope) { $scope.a = 1; $scope.b = 1; $scope.value = $scope.$eval('a+b'); }); </script> </body> </html>
Code Explicação:
- Duas variáveis de escopo,
aeb, cada um com o valor 1. $scope.$evalavalia a soma e atribui o resultado à variável de escopo.value.- A visualização então exibe
value.
Saída:
A saída mostra a expressão avaliada dentro do controlador, com a soma das duas variáveis de escopo enviadas e exibidas na visualização.












