Diretivas AngularJS: ng-init, ng-app, ng-model e ng-repeat

โšก Resumo Inteligente

As diretivas do AngularJS estendem o HTML simples com novos comportamentos. Os marcadores ng-app, ng-init, ng-model e ng-repeat inicializam uma aplicaรงรฃo, preenchem dados locais, vinculam controles de formulรกrio ao modelo e clonam elementos uma vez por item de coleรงรฃo.

  • ๐Ÿงฉ Ideia central: Uma diretiva รฉ um marcador em um elemento HTML que instrui o compilador AngularJS a atribuir um comportamento a ele.
  • ๐Ÿš€ Bootstrap Point: O ng-app declara o elemento raiz e inicia automaticamente o AngularJS assim que a pรกgina รฉ carregada.
  • ๐Ÿงฎ Dados Locais: O ng-init atribui valores iniciais ร s variรกveis โ€‹โ€‹de escopo dentro da marcaรงรฃo, sem a necessidade de um controlador.
  • ๐Ÿ”„ Encadernaรงรฃo bidirecional: O ng-model vincula um input, select ou textarea a uma propriedade de escopo, de modo que as ediรงรตes atualizem o modelo instantaneamente.
  • ๐Ÿ“‹ Marcaรงรฃo repetida: ng-repeat clona o elemento hospedeiro uma vez para cada item em um array ou objeto.
  • ๐ŸŽ›๏ธ Quatro formas de invocaรงรฃo: A propriedade `restrict` aceita os caracteres E, A, C e M para representar a sintaxe de elemento, atributo, classe e comentรกrio.
  • ๐Ÿ“š Biblioteca Ampliada: AngularJS fornece dezenas de diretivas integradas, entre elas ng-bind, ng-if, ng-show, ng-class e ng-click.

Diretivas AngularJS

O que รฉ diretiva em AngularJS?

A Directiva Em AngularJS, um comando adiciona novas funcionalidades ao HTML. Quando o AngularJS percorre o cรณdigo HTML, ele primeiro encontra as diretivas na pรกgina e, em seguida, analisa o HTML de acordo. Um exemplo simples de diretiva AngularJS, que vimos em capรญtulos anteriores, รฉ a diretiva "ng-model". Essa diretiva รฉ usada para vincular nosso modelo de dados ร  nossa visualizaรงรฃo.

Observaรงรฃo: Vocรช pode ter cรณdigo AngularJS bรกsico em uma pรกgina HTML com as diretivas ng-init, ng-repeat e ng-model sem a necessidade de Controllers. A lรณgica dessas diretivas estรก no arquivo AngularJS fornecido por GoogleOs controladores sรฃo construรงรตes de programaรงรฃo AngularJS de nรญvel superior que permitem a implementaรงรฃo da lรณgica de negรณcios, mas, como mencionado, para uma aplicaรงรฃo ser considerada uma aplicaรงรฃo AngularJS, nรฃo รฉ obrigatรณrio ter um controlador.

Mas como รฉ que um navegador acaba executando um?

Como as diretivas do AngularJS funcionam no HTML

Como definimos na introduรงรฃo, uma diretiva AngularJS รฉ uma forma de estender a funcionalidade de HTMLQuando a pรกgina รฉ carregada, o compilador AngularJS percorre o DOM, compara cada elemento com as diretivas registradas e aplica o comportamento encontrado.

AngularJS O sistema vem com dezenas de diretivas integradas, alรฉm de quaisquer outras que vocรช registre. As quatro explicadas abaixo com exemplos prรกticos โ€” ng-app, ng-init, ng-model e ng-repeat โ€” sรฃo as primeiras que os iniciantes encontram. Antes desses exemplos, observe as quatro maneiras pelas quais uma diretiva pode ser escrita.

Quais sรฃo os quatro tipos de diretivas do AngularJS?

Uma diretiva nem sempre รฉ um atributo. O compilador AngularJS pode identificar uma diretiva pelo nome do elemento, atributo, nome da classe ou comentรกrio, e cada diretiva declara quais formas aceita por meio de sua formataรงรฃo. restrict propriedade. O padrรฃo รฉ EAPortanto, a sintaxe de elemento e atributo funciona, a menos que vocรช especifique o contrรกrio. O valor รฉ mais importante quando vocรช escreve sua prรณpria diretiva, porque o compilador ignora qualquer forma que o valor de `restrict` exclua.

restringir valor Correspondido por Exemplo de marcaรงรฃo Uso tรญpico
E Nome do elemento Blocos independentes que possuem um modelo.
A Atributo Adicionando comportamento a um elemento existente
C Nome da classe Marcaรงรฃo legada que nรฃo aceita novos atributos.
M Comentรกrio Raro, mantido para compatibilidade com versรตes anteriores.

๐Ÿ’ก Dica: Prefira a sintaxe de elemento e atributo. Referรชncia oficial de diretivas do AngularJS Trata formulรกrios de classe e comentรกrios como opรงรตes legadas. Os exemplos abaixo usam sintaxe de atributo.

ng-app em AngularJS

Esta diretiva รฉ usada para inicializar uma aplicaรงรฃo AngularJS. Quando presente em uma pรกgina HTML, ela basicamente informa ao AngularJS que esta pรกgina HTML รฉ uma aplicaรงรฃo AngularJS.

Exemplo de ng-app

O exemplo abaixo mostra como transformar uma aplicaรงรฃo HTML comum em uma aplicaรงรฃo AngularJS.

ng-app em AngularJS

<!DOCTYPE html>
<html>
<head>
    <meta chrset="UTF 8">
    <title>Event Registration</title>
</head>
<body>

<script src="https://code.angularjs.org/1.6.9/angular-route.js"></script>
<script src="https://code.angularjs.org/1.6.9/angular.js"></script>
<script src="https://code.angularjs.org/1.6.9/angular.min.js"></script>
<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>

<h1> Guru99 Global Event</h1>

<div ng-app="">

    Tutorial Name : {{ "Angular" + "JS"}}

</div>

</body>
</html>

โš ๏ธ Atenรงรฃo: O anรบncio mantรฉm o original. chrset="UTF 8", exatamente como publicado. O atributo correto รฉ charset="UTF-8".

Code Explicaรงรฃo:

  1. A diretiva โ€œng-appโ€ รฉ adicionada ร  nossa tag div para indicar que esta aplicaรงรฃo รฉ uma aplicaรงรฃo AngularJS. Observe que a diretiva ng-app pode ser aplicada a qualquer tag, portanto, tambรฉm pode ser inserida na tag body.
  2. Como definimos esta aplicaรงรฃo como uma aplicaรงรฃo AngularJS, agora podemos utilizar as funcionalidades do AngularJS. No nosso caso, estamos usando expressรตes para simplesmente concatenar duas strings.

Se o cรณdigo for executado com sucesso, a seguinte saรญda serรก exibida.

Saรญda:

ng-app em AngularJS

O resultado mostra claramente o efeito da expressรฃo, o que sรณ foi possรญvel porque definimos a aplicaรงรฃo como uma aplicaรงรฃo AngularJS. A prรณxima diretiva fornece os seus dados.

ng-init em AngularJS

Isso รฉ usado para inicializar os dados da aplicaรงรฃo. ร€s vezes, vocรช pode precisar de alguns dados locais para sua aplicaรงรฃo, e isso pode ser feito com a diretiva ng-init.

Exemplo de ng-init

Neste exemplo, vamos criar uma variรกvel chamada โ€œTutorialNameโ€ usando a diretiva ng-init e exibir o valor dessa variรกvel na pรกgina.

ng-init em AngularJS

<!DOCTYPE html>
<html>
<head>
    <meta chrset="UTF 8">
    <title>Event Registration</title>
</head>
<body>

<script src="https://code.angularjs.org/1.6.9/angular-route.js"></script>
<script src="https://code.angularjs.org/1.6.9/angular.js"></script>
<script src="https://code.angularjs.org/1.6.9/angular.min.js"></script>
<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>

<h1> Guru99 Global Event</h1>

<div ng-app="" ng-init="TutorialName='Angular JS'">

    Tutorial Name : {{ TutorialName}}

</div>

</body>
</html>

Code Explicaรงรฃo:

  1. A diretiva ng-init รฉ adicionada ร  nossa tag div para definir uma variรกvel local chamada โ€œTutorialNameโ€ e o valor dado a ela รฉ โ€œAngularJSโ€.
  2. Estamos usando expressรตes em AngularJS para exibir o resultado da variรกvel chamada โ€œTutorialNameโ€, que foi definida em nossa diretiva ng-init.

Se o cรณdigo for executado com sucesso, a seguinte saรญda serรก exibida.

Saรญda:

ng-init em AngularJS

Na saรญda,

  • O resultado mostra claramente a saรญda da expressรฃo que contรฉm a string โ€œAngularJSโ€. Isso ocorre porque a string โ€œAngularJSโ€ foi atribuรญda ร  variรกvel 'TutorialName' na seรงรฃo ng-init.

A prรณxima diretiva envia dados da tela de volta para o modelo.

modelo ng em AngularJS

E, por fim, temos a diretiva ng-model, que รฉ usada para vincular o valor de um controle HTML aos dados do aplicativo.

Exemplo de modelo ng

Neste exemplo,

  • Vamos criar 2 variรกveis โ€‹โ€‹chamadas โ€œquantidadeโ€ e โ€œpreรงoโ€. Essas variรกveis โ€‹โ€‹serรฃo vinculadas a 2 controles de entrada de texto.
  • Em seguida, exibiremos o valor total com base na multiplicaรงรฃo dos valores de preรงo e quantidade.

modelo ng em AngularJS

<!DOCTYPE html>
<html>
<head>
    <meta chrset="UTF 8">
    <title>Event Registration</title>
</head>
<body>

<script src="https://code.angularjs.org/1.6.9/angular-route.js"></script>
<script src="https://code.angularjs.org/1.6.9/angular.js"></script>
<script src="https://code.angularjs.org/1.6.9/angular.min.js"></script>
<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>

<h1> Guru99 Global Event</h1>

<div ng-app="" ng-init="quantity=1;price=5">

    People : <input type="number" ng-model="quantity">

    Registration Price : <input type="number" ng-model="price">

    Total : {{quantity * price}}

</div>

</body>
</html>

Code Explicaรงรฃo:

  1. A diretiva ng-init รฉ adicionada ร  nossa tag div para definir 2 variรกveis โ€‹โ€‹locais; um รฉ chamado de โ€œquantidadeโ€ e o outro รฉ โ€œpreรงoโ€.
  2. Agora estamos usando a diretiva do modelo ng para vincular as caixas de texto โ€œPessoasโ€ e โ€œPreรงo de registroโ€ ร s nossas variรกveis โ€‹โ€‹locais โ€œquantidadeโ€ e โ€œpreรงoโ€, respectivamente.
  3. Por fim, mostramos o Total por meio de uma expressรฃo, que รฉ a multiplicaรงรฃo das variรกveis โ€‹โ€‹quantidade e preรงo.

Se o cรณdigo for executado com sucesso, a seguinte saรญda serรก exibida.

Saรญda:

modelo ng em AngularJS

  • A saรญda mostra claramente a multiplicaรงรฃo dos valores de Pessoas e Preรงo de Registro.

Agora, se vocรช alterar os valores de "Pessoas" e "Preรงo de inscriรงรฃo" nas caixas de texto, o Total serรก alterado automaticamente.

modelo ng em AngularJS

  • O resultado acima demonstra o poder do data binding no AngularJS, que รฉ alcanรงado com o uso do diretiva do modelo ng.

O รบltimo dos quatro processa vรกrios valores simultaneamente.

ng-repetir em AngularJS

Isso รฉ usado para repetir um elemento HTML. O exemplo abaixo mostra como usar o diretiva ng-repeat.

Exemplo de repetiรงรฃo ng

Neste exemplo,

  • Teremos um array de nomes de capรญtulos em uma variรกvel de array e
  • em seguida, use a diretiva ng-repeat para exibir cada elemento da matriz como um item de lista

ng-repetir em AngularJS

<!DOCTYPE html>
<html>
<head>
    <meta chrset="UTF 8">
    <title>Event Registration</title>
</head>
<body>

<script src="https://code.angularjs.org/1.6.9/angular-route.js"></script>
<script src="https://code.angularjs.org/1.6.9/angular.js"></script>
<script src="https://code.angularjs.org/1.6.9/angular.min.js"></script>
<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>

<h1> Guru99 Global Event</h1>

<div ng-app="" ng-init="chapters=['Controllers','Models','Filters']">
    <ul>
        <li ng-repeat="names in chapters">
            {{names}}
        </li>
    </ul>

</div>

</body>
</html>

Code Explicaรงรฃo:

  1. A diretiva ng-init รฉ adicionada ร  nossa tag div para definir uma variรกvel chamada โ€œcapรญtulosโ€, que รฉ uma variรกvel de array contendo 3 strings.
  2. O elemento ng-repeat รฉ usado declarando uma variรกvel embutida chamada โ€œnomesโ€ e percorrendo cada elemento na matriz de capรญtulos.
  3. Finalmente, estamos mostrando o valor da variรกvel embutida local 'nomes'.

Se o cรณdigo for executado com sucesso, a seguinte saรญda serรก exibida.

Saรญda:

ng-repetir em AngularJS

  • A saรญda acima mostra apenas que a diretiva ng-repeat pegou cada valor do array chamado โ€œcapรญtulosโ€ e criou itens de lista HTML para cada item do array.

Esses quatro elementos abrangem inicializaรงรฃo, dados, vinculaรงรฃo e repetiรงรฃo. A lista abaixo mostra o que vem a seguir.

Outras diretivas integradas do AngularJS comumente usadas

As quatro diretivas acima sรฃo o conjunto inicial, nรฃo a biblioteca completa. Cada entrada abaixo รฉ um atributo que vocรช coloca diretamente no elemento que ele controla.

  • ng-bind: Insere um valor de escopo no texto de um elemento sem exibir brevemente as chaves brutas ao carregar a pรกgina.
  • ng-if: Remove o elemento do DOM quando sua expressรฃo for falsa e o recria quando for verdadeira.
  • ng-show e ng-hide: Toggle visibilidade com CSS. O elemento permanece no DOM, portanto, alternรขncias repetidas tรชm um custo menor.
  • ng-class: Adiciona ou remove classes CSS de uma expressรฃo, permitindo que o estilo siga o modelo.
  • ng-click: Executa uma expressรฃo ou uma funรงรฃo de escopo quando o usuรกrio clica no elemento.
  • ng-controller: Anexa um controlador a um bloco de marcaรงรฃo quando a pรกgina ultrapassa os limites do ng-init.
  • ng-disabled e ng-readonly: Defina o atributo de formulรกrio correspondente sempre que a expressรฃo for verdadeira.

As perguntas frequentes abaixo respondem ร s dรบvidas mais comuns que surgem apรณs esta lista.

Perguntas Frequentes

O AngularJS normaliza os nomes dos atributos antes de comparรก-los. Ele remove qualquer prefixo "x-" ou "data-" e, em seguida, converte os separadores hรญfen, dois pontos ou sublinhado em camelCase. ร‰ por isso que data-ng-app, x-ng-app e ng:app sรฃo todos resolvidos para a mesma diretiva ngApp.

Ambos imprimem um valor de escopo. Uma expressรฃo de interpolaรงรฃo pode exibir brevemente suas chaves brutas antes que o AngularJS termine de carregar, enquanto o ng-bind deixa o elemento vazio atรฉ que a compilaรงรฃo seja concluรญda. Prefira o ng-bind para texto que aparece acima da dobra.

Nรฃo. O suporte oficial para AngularJS terminou em janeiro de 2022, portanto, nรฃo serรฃo lanรงadas mais atualizaรงรตes. As pรกginas existentes continuarรฃo funcionando, mas novos projetos devem ser iniciados no Angular moderno, onde essas diretivas se tornam componentes e diretivas estruturais como *ngIf e *ngFor.

Em parte. Assistentes como Copiloto do GitHub Reescrever ng-repeat como *ngFor e ng-if como *ngIf de forma confiรกvel. Heranรงa de escopo, vinculaรงรตes bidirecionais e funรงรตes de link personalizadas ainda precisam de revisรฃo humana antes da publicaรงรฃo do cรณdigo migrado.

Cole o cรณdigo HTML, a declaraรงรฃo do mรณdulo e a saรญda do console em ChatGPT e pergunta qual diretiva nรฃo foi correspondida. Geralmente, ela detecta a ausรชncia de um ng-app, um atributo com erro de ortografia ou um valor de restriรงรฃo que bloqueia a sintaxe escolhida.

Resuma esta postagem com: