SlideShare uma empresa Scribd logo
1 de 23
Baixar para ler offline
ANGULARJS
por: Cristiano Pires Martins
fonte:
http://javascriptbrasil.com
http://tableless.com.br
http://www.w3schools.com
https://www.angularjs.org
http://www.devmedia.com.br
Introdução
➤ AngularJS é o mais novo lançamento do time de
desenvolvedores do Google. Diferentemente de outros
frameworks JavaScript, ele adota uma abordagem mais ligada
à sintaxe HTML, funcionando como uma espécie de extensão
da linguagem.
➤ AngularJS is a JavaScript framework. It is a library written in
JavaScript.
➤ AngularJS is distributed as a JavaScript file, and can be added
to a web page with a script tag:
➤ <script src="http://ajax.googleapis.com/ajax/libs/
angularjs/1.3.14/angular.min.js"></script>
Material
➤ Fonte:
➤ https://developers.google.com/speed/libraries/#angularjs
➤ AngularJS Home Page: https://angularjs.org/ (muito bom)
➤ AngularJS Guide: http://docs.angularjs.org/guide/overview
➤ Tutorial Oficial do AngularJS: http://docs.angularjs.org/tutorial
➤ Materiais:
➤ https://material.angularjs.org/latest/
➤ https://github.com/angular/material-start
➤ Exemplos práticos: http://javascriptbrasil.com/2013/10/23/aprenda-angularjs-com-estes-5-exemplos-praticos/
➤ Depuração no Chrome:
➤ https://github.com/angular/batarang
➤ Batarang - Extensão para Debug do Chrome:
➤ https://www.youtube.com/watch?v=q-7mhcHXSfM&feature=youtu.be
➤ Cursos:
➤ em vídeo: http://campus.codeschool.com/courses/shaping-up-with-angular-js/intro
➤ http://www.devmedia.com.br/exemplo-basico-usando-angularjs-curso-completo-de-angularjs-aula-2/32149
➤ em vídeo: http://egghead.io/lessons
➤ em vídeo: https://dicasdolampada.wordpress.com/2013/10/15/videos_angularjs/
Pré-requisitos
➤ Conhecer:
➤ HTML
➤ CSS
➤ JavaScript
AngularJS Extends HTML
➤ AngularJS extends HTML with ng-directives.
➤ The ng-app directive defines an AngularJS application.
➤ The ng-model directive binds the value of HTML
controls (input, select, textarea) to application data.
➤ The ng-bind directive binds application data to the
HTML view.
http://www.w3schools.com/angular/angular_intro.asp
Exemplo 1
<!DOCTYPE html>
<html>
<script src= "http://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/
angular.min.js"></script>
<body>
<div ng-app="" ng-init="firstName='John'">
<p>The name is <span ng-bind="firstName"></span></p>
</div>
</body>
</html>
Exemplo 2
<!DOCTYPE html>
<html lang="en-US">
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/
angular.min.js"></script>
<body>
<div ng-app="">
  <p>Name : <input type="text" ng-model="name"></p>
  <h1>Hello {{name}}</h1>
</div>
</body>
</html>
Examples explained
➤ AngularJS starts automatically when the web page has loaded.
➤ The ng-app directive tells AngularJS that the <div> element
is the "owner" of an AngularJS application.
➤ The ng-model directive binds the value of the input field to
the application variable name.
➤ The ng-bind directive binds the innerHTML of the <p>
element to the application variable name.
http://www.w3schools.com/angular/angular_intro.asp
AngularJS Directives
➤ As you have already seen, AngularJS directives are HTML
attributes with an ng prefix.
➤ The ng-init directive initialize AngularJS application variables.
http://www.w3schools.com/angular/angular_intro.asp
<div ng-app="" ng-init="firstName='John'">
<p>The name is <span ng-bind="firstName"></span></p>
</div>
AngularJS Expressions
➤ AngularJS expressions are written inside double braces: {{ expression }}.
➤ AngularJS will "output" data exactly where the expression is written:
<!DOCTYPE html>
<html>
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js"></script>
<body>
<div ng-app="">
<p>My first expression: {{ 5 + 5 }}</p>
</div>
</body>
</html>
http://www.w3schools.com/angular/angular_intro.asp
História
➤ A versão 1.0 do AngularJS saiu em 2012.
➤ Miško Hevery, um funcionário da Google, começou a trabalhar
com AngularJS em 2009.
➤ A idea foi tão boa que hoje o projeto é oficialmente apoiado
pelo Google.
Estrutura Inicial
➤ Uma aplicação web básica informando uma nova propriedade
na tag do arquivo: ng-app.
<html ng-app>
<head>
<title>Lista de compras</title>
<script src="http://code.angularjs.org/1.0.1/angular-1.0.1.min.js"></script>
</head>
<body>
</body>
</html>
http://tableless.com.br/criando-uma-aplicacao-simples-com-angularjs/
➤ O atributo ng-app na tag informa que o DOM, além
de HTML, é também um documento AngularJS.
Estrutura Inicial
➤ Essa propriedade pode ser utilizada em qualquer elemento do DOM — em alguns
casos, apenas uma parte do seu HTML será uma aplicação Angular.
<html ng-app>
<head>
<title>AngularJS - Tableless</title>
<script src="http://code.angularjs.org/1.0.1/angular-1.0.1.min.js"></script>
</head>
<body>
<input type="text" ng-model="nome">
<p>Olá, Tableless! Meu nome é: {{ nome }}</p>
</body>
</html>
http://tableless.com.br/criando-uma-aplicacao-simples-com-angularjs/
O atributo ng-app na tag informa que o DOM, além de
HTML, é também um documento AngularJS.
O framework define o elemento com o atributo ng-app como a raiz da aplicação.
Explicação do Código
➤ Ao carregar o HTML no navegador e digitar qualquer coisa no
input, o parágrafo é atualizado automaticamente. Perceberam:
nada em JavaScript?
➤ A propriedade ng-model funciona como um canal entre a
view e o form. Ela pode ser utilizada em inputs do tipo texto,
selects, textareas, checkboxes e radio buttons.
➤ O model, seus dados e suas validações ficam automaticamente
disponíveis no escopo da nossa aplicação.
➤ A associação de dados é feita através do famoso “bigode-
bigode” ({{ }}), passando nomes presentes no escopo (o
model nome).
http://tableless.com.br/criando-uma-aplicacao-simples-com-angularjs/
Enfim, javascript!
➤ Chegou a hora de escrever o primeiro código JavaScript.
Criando um controller para aplicação que carrega uma lista
inicial de ítens. Os ítens são armazenados no escopo da
aplicação ($scope).
function ListaComprasController($scope) {
$scope.itens = [
{produto: 'Leite', quantidade: 2, comprado: false},
{produto: 'Cerveja', quantidade: 12, comprado: false}
];
}
http://tableless.com.br/criando-uma-aplicacao-simples-com-angularjs/
Exibindo os ítens
<div ng-controller="ListaComprasController">
<table>
<thead>
<tr>
<th>Produto</th>
<th>Quantidade</th>
</tr>
</thead>
<tbody>
<tr ng-repeat="item in itens">
<td><strong>{{ item.produto }}</strong></td>
<td>{{ item.quantidade }}</td>
</tr>
</tbody>
</table>
</div>
http://tableless.com.br/criando-uma-aplicacao-simples-com-angularjs/
Adicionar um
novo bloco
HTML com a
tabela de
listagem dos
produtos:
Explicando
➤ Duas novidades foram apresentadas no HTML anterior:
➤ O atributo ng-controller informa o nome do controller
JavaScript responsável pelo bloco contido no elemento, no
caso o controller ListaComprasController definido
anteriormente.
➤ O atributo ng-repeat executa um loop na variável itens
declarada no escopo da aplicação, retornando cada item e
imprimindo o produto e a quantidade em uma linha da
tabela. O formato é: <retorno> in <coleção>.
http://tableless.com.br/criando-uma-aplicacao-simples-com-angularjs/
Adicionando Produtos
➤ Para não ficar apenas com 4 linhas de JavaScript, será adicionada
uma funcionalidade que inclui ítens em na lista de compras.
➤ O primeiro passo é criar um formulário que será responsável
pela ação:
<form class="form-inline" name="formItem">
<input type="text" ng-model="item.produto">
<input type="number" ng-model="item.quantidade">
<button ng-click="adicionaItem()">adicionar ítem</button>
</form>
http://tableless.com.br/criando-uma-aplicacao-simples-com-angularjs/
O atributo ng-model está sendo utilizando novamente para definir um model para os
inputs. O controller passa a receber diretamente informações sobre esses campos.
ng-click
➤ A novidade dessa vez fica por conta do atributo ng-click, que
recebe uma função que precisa ser declarada no controller:
function ListaComprasController($scope) {
$scope.itens = [
{produto: 'Leite', quantidade: 2, comprado: false},
{produto: 'Cerveja', quantidade: 12, comprado: false}
];
$scope.adicionaItem = function () {
$scope.itens.push({produto: $scope.item.produto,
quantidade: $scope.item.quantidade,
comprado: false});
$scope.item.produto = $scope.item.quantidade = '';
};
}
http://tableless.com.br/criando-uma-aplicacao-simples-com-angularjs/
Explicando
➤ Ao clicar no botão, o produto é adicionado à tabela.
➤ Aqui o model poderia estar realizando diversas validações
disponíveis na API do framework entre outras coisas.
➤ Porém, no exemplo, apenas foi adicionado um novo item à
lista de produtos e em seguida os models foram limpos (os
campos do formulário).
Teste
➤ Por ser um framework que demanda um código JavaScript
mais estruturado, fica bem simples testar essa aplicação.
Utilizando Jasmine (http://tableless.com.br/testando-seu-
codigo-jquery-com-jasmine-parte-1/), por exemplo, poderia
facilmente testar o controller dessa forma:
describe('Lista Compras Unitário', function () {
describe('ListaComprasController', function () {
beforeEach(function () {
this.$scope = {};
this.controller = new ListaComprasController(this.$scope);
});
it('deve criar "itens" com 2 ítens', function () {
expect(this.$scope.itens.length).toBe(2);
});
describe('adicionaItem', function () {
it('deve adicionar um novo ítem à lista com dados do escopo', function () {
this.$scope.item = {};
this.$scope.item.produto = 'Carne';
this.$scope.item.quantidade = 5;
this.$scope.adicionaItem();
expect(this.$scope.itens.length).toBe(3);
expect(this.$scope.itens[2].produto).toBe('Carne');
expect(this.$scope.itens[2].quantidade).toBe(5);
expect(this.$scope.itens[2].comprado).toBeFalse;
});
});
});
});
http://tableless.com.br/criando-uma-aplicacao-simples-com-angularjs/
Código disponível…
➤ https://github.com/tableless/exemplos/tree/gh-pages/
angularjs/lista-compras/

Mais conteúdo relacionado

Mais procurados

Introdução à MEAN Stack
Introdução à MEAN StackIntrodução à MEAN Stack
Introdução à MEAN StackBruno Catão
 
Evento Front End SP - Organizando o Javascript
 Evento Front End SP - Organizando o Javascript Evento Front End SP - Organizando o Javascript
Evento Front End SP - Organizando o JavascriptMichel Ribeiro
 
Aplicações rápidas para a Web com Django
Aplicações rápidas para a Web com DjangoAplicações rápidas para a Web com Django
Aplicações rápidas para a Web com DjangoFreedom DayMS
 
Minicurso de JavaScript (Portuguese)
Minicurso de JavaScript (Portuguese)Minicurso de JavaScript (Portuguese)
Minicurso de JavaScript (Portuguese)Bruno Grange
 
Ionic 2/3 + Firebase
Ionic 2/3 + FirebaseIonic 2/3 + Firebase
Ionic 2/3 + FirebaseBruno Catão
 
11 Java Script - Exemplos com eventos
11 Java Script - Exemplos com eventos11 Java Script - Exemplos com eventos
11 Java Script - Exemplos com eventosCentro Paula Souza
 
Desenvolvimento de Módulos Divi Builder
Desenvolvimento de Módulos Divi BuilderDesenvolvimento de Módulos Divi Builder
Desenvolvimento de Módulos Divi BuilderDaniel Paz
 
JQuery Alagoinhas Dev Day - UNEB
JQuery Alagoinhas Dev Day - UNEBJQuery Alagoinhas Dev Day - UNEB
JQuery Alagoinhas Dev Day - UNEBLuciano Borges
 
ODIG - Javascript, DOM Elements e jQuery
ODIG - Javascript, DOM Elements e jQueryODIG - Javascript, DOM Elements e jQuery
ODIG - Javascript, DOM Elements e jQueryMarketing Digital ODIG
 

Mais procurados (20)

Java script aula 06 - dom
Java script   aula 06 - domJava script   aula 06 - dom
Java script aula 06 - dom
 
Introdução à MEAN Stack
Introdução à MEAN StackIntrodução à MEAN Stack
Introdução à MEAN Stack
 
Java script aula 07 - eventos
Java script   aula 07 - eventosJava script   aula 07 - eventos
Java script aula 07 - eventos
 
Introdução ao JQuery e AJAX
Introdução ao JQuery e AJAXIntrodução ao JQuery e AJAX
Introdução ao JQuery e AJAX
 
Python 06
Python 06Python 06
Python 06
 
jQuery na Prática!
jQuery na Prática!jQuery na Prática!
jQuery na Prática!
 
Html dom, eventos, jquery
Html dom, eventos, jqueryHtml dom, eventos, jquery
Html dom, eventos, jquery
 
Evento Front End SP - Organizando o Javascript
 Evento Front End SP - Organizando o Javascript Evento Front End SP - Organizando o Javascript
Evento Front End SP - Organizando o Javascript
 
Aplicações rápidas para a Web com Django
Aplicações rápidas para a Web com DjangoAplicações rápidas para a Web com Django
Aplicações rápidas para a Web com Django
 
Curso de Desenvolvimento Web - Módulo 03 - JavaScript
Curso de Desenvolvimento Web - Módulo 03 - JavaScriptCurso de Desenvolvimento Web - Módulo 03 - JavaScript
Curso de Desenvolvimento Web - Módulo 03 - JavaScript
 
Minicurso de JavaScript (Portuguese)
Minicurso de JavaScript (Portuguese)Minicurso de JavaScript (Portuguese)
Minicurso de JavaScript (Portuguese)
 
Python 08
Python 08Python 08
Python 08
 
Python 07
Python 07Python 07
Python 07
 
jQuery Simplificando o JavaScript
jQuery Simplificando o JavaScriptjQuery Simplificando o JavaScript
jQuery Simplificando o JavaScript
 
Ionic 2/3 + Firebase
Ionic 2/3 + FirebaseIonic 2/3 + Firebase
Ionic 2/3 + Firebase
 
11 Java Script - Exemplos com eventos
11 Java Script - Exemplos com eventos11 Java Script - Exemplos com eventos
11 Java Script - Exemplos com eventos
 
Programação Web com jQuery
Programação Web com jQueryProgramação Web com jQuery
Programação Web com jQuery
 
Desenvolvimento de Módulos Divi Builder
Desenvolvimento de Módulos Divi BuilderDesenvolvimento de Módulos Divi Builder
Desenvolvimento de Módulos Divi Builder
 
JQuery Alagoinhas Dev Day - UNEB
JQuery Alagoinhas Dev Day - UNEBJQuery Alagoinhas Dev Day - UNEB
JQuery Alagoinhas Dev Day - UNEB
 
ODIG - Javascript, DOM Elements e jQuery
ODIG - Javascript, DOM Elements e jQueryODIG - Javascript, DOM Elements e jQuery
ODIG - Javascript, DOM Elements e jQuery
 

Destaque

Aula 03-oac-componentes-de-um-sistema-de-computacao
Aula 03-oac-componentes-de-um-sistema-de-computacaoAula 03-oac-componentes-de-um-sistema-de-computacao
Aula 03-oac-componentes-de-um-sistema-de-computacaoCristiano Pires Martins
 
Aula 02-oac-historia-da-computacao-part2
Aula 02-oac-historia-da-computacao-part2Aula 02-oac-historia-da-computacao-part2
Aula 02-oac-historia-da-computacao-part2Cristiano Pires Martins
 

Destaque (20)

Java script aula 03 - objetos
Java script   aula 03 - objetosJava script   aula 03 - objetos
Java script aula 03 - objetos
 
Java script aula 04 - objeto array
Java script   aula 04 - objeto arrayJava script   aula 04 - objeto array
Java script aula 04 - objeto array
 
Aula 06 textos na web
Aula 06   textos na webAula 06   textos na web
Aula 06 textos na web
 
Aula 05 layout e composição do site
Aula 05   layout e composição do siteAula 05   layout e composição do site
Aula 05 layout e composição do site
 
Javascript aula 01 - visão geral
Javascript   aula 01 - visão geralJavascript   aula 01 - visão geral
Javascript aula 01 - visão geral
 
Aula 03-oac-componentes-de-um-sistema-de-computacao
Aula 03-oac-componentes-de-um-sistema-de-computacaoAula 03-oac-componentes-de-um-sistema-de-computacao
Aula 03-oac-componentes-de-um-sistema-de-computacao
 
Aula 07 - lista linear
Aula 07 - lista linearAula 07 - lista linear
Aula 07 - lista linear
 
Aula 08 - árvores
Aula 08 - árvoresAula 08 - árvores
Aula 08 - árvores
 
OAC Aula 09 - Entrada e Saída
OAC Aula 09 - Entrada e SaídaOAC Aula 09 - Entrada e Saída
OAC Aula 09 - Entrada e Saída
 
Aula 02 semiótica e cores
Aula 02   semiótica e coresAula 02   semiótica e cores
Aula 02 semiótica e cores
 
Aula 04 layout e composição do site
Aula 04   layout e composição do siteAula 04   layout e composição do site
Aula 04 layout e composição do site
 
WDI - aula 07 - css com html
WDI - aula 07 - css com htmlWDI - aula 07 - css com html
WDI - aula 07 - css com html
 
Palestra "Inovações Tecnológicas"
Palestra "Inovações Tecnológicas"Palestra "Inovações Tecnológicas"
Palestra "Inovações Tecnológicas"
 
Aula 08-oac-execucao-de-programas
Aula 08-oac-execucao-de-programasAula 08-oac-execucao-de-programas
Aula 08-oac-execucao-de-programas
 
Aula 05-entrada e-saida
Aula 05-entrada e-saidaAula 05-entrada e-saida
Aula 05-entrada e-saida
 
Aula 01-introducao-ao-so
Aula 01-introducao-ao-soAula 01-introducao-ao-so
Aula 01-introducao-ao-so
 
Aula 01-oac-introducao-a-oac
Aula 01-oac-introducao-a-oacAula 01-oac-introducao-a-oac
Aula 01-oac-introducao-a-oac
 
Aula 02-oac-historia-da-computacao-part2
Aula 02-oac-historia-da-computacao-part2Aula 02-oac-historia-da-computacao-part2
Aula 02-oac-historia-da-computacao-part2
 
Aula 03-deadlock
Aula 03-deadlockAula 03-deadlock
Aula 03-deadlock
 
Aula 04-gerenciamento-basico-de-memoria
Aula 04-gerenciamento-basico-de-memoriaAula 04-gerenciamento-basico-de-memoria
Aula 04-gerenciamento-basico-de-memoria
 

Semelhante a Java script aula 10 - angularjs

Prototype Framework Javascript
Prototype Framework JavascriptPrototype Framework Javascript
Prototype Framework JavascriptMarcio Romu
 
Desenvolvendo aplicações web com o framework cakephp
Desenvolvendo aplicações web com o framework cakephpDesenvolvendo aplicações web com o framework cakephp
Desenvolvendo aplicações web com o framework cakephpRodrigo Aramburu
 
Como Perder Peso (no browser)
Como Perder Peso (no browser)Como Perder Peso (no browser)
Como Perder Peso (no browser)Zeno Rocha
 
Spring MVC Framework
Spring MVC FrameworkSpring MVC Framework
Spring MVC Frameworkelliando dias
 
Mini curso introdutório ao Django
Mini curso introdutório ao DjangoMini curso introdutório ao Django
Mini curso introdutório ao DjangoVinicius Mendes
 
Desenvolvimento de Aplicações para o Google App Engine (CPBR5)
Desenvolvimento de Aplicações para o Google App Engine (CPBR5)Desenvolvimento de Aplicações para o Google App Engine (CPBR5)
Desenvolvimento de Aplicações para o Google App Engine (CPBR5)Carlos Duarte do Nascimento
 
Desenvolvimento de aplicações para o Google App Engine
Desenvolvimento de aplicações para o Google App EngineDesenvolvimento de aplicações para o Google App Engine
Desenvolvimento de aplicações para o Google App EngineCampus Party Brasil
 
Google Analytics Reporting API: Bebendo água direto da fonte
Google Analytics Reporting API: Bebendo água direto da fonteGoogle Analytics Reporting API: Bebendo água direto da fonte
Google Analytics Reporting API: Bebendo água direto da fonteJohann Vivot
 
ASP.NET MVC - Alexandre Tarifa
ASP.NET MVC - Alexandre TarifaASP.NET MVC - Alexandre Tarifa
ASP.NET MVC - Alexandre Tarifaguestea329c
 
AngularJS com NODE.JS e Socket.IO
AngularJS com NODE.JS e Socket.IOAngularJS com NODE.JS e Socket.IO
AngularJS com NODE.JS e Socket.IODouglas Lira
 
Desenvolvendo aplicativos web com o google app engine
Desenvolvendo aplicativos web com o google app engineDesenvolvendo aplicativos web com o google app engine
Desenvolvendo aplicativos web com o google app enginepugpe
 
Javascript truquesmagicos
Javascript truquesmagicosJavascript truquesmagicos
Javascript truquesmagicosponto hacker
 

Semelhante a Java script aula 10 - angularjs (20)

Angular js
Angular jsAngular js
Angular js
 
Prototype Framework Javascript
Prototype Framework JavascriptPrototype Framework Javascript
Prototype Framework Javascript
 
Desenvolvendo aplicações web com o framework cakephp
Desenvolvendo aplicações web com o framework cakephpDesenvolvendo aplicações web com o framework cakephp
Desenvolvendo aplicações web com o framework cakephp
 
Django Módulo Básico Parte II
Django Módulo Básico Parte IIDjango Módulo Básico Parte II
Django Módulo Básico Parte II
 
Como Perder Peso (no browser)
Como Perder Peso (no browser)Como Perder Peso (no browser)
Como Perder Peso (no browser)
 
Spring MVC Framework
Spring MVC FrameworkSpring MVC Framework
Spring MVC Framework
 
Mini curso introdutório ao Django
Mini curso introdutório ao DjangoMini curso introdutório ao Django
Mini curso introdutório ao Django
 
Desenvolvimento de Aplicações para o Google App Engine (CPBR5)
Desenvolvimento de Aplicações para o Google App Engine (CPBR5)Desenvolvimento de Aplicações para o Google App Engine (CPBR5)
Desenvolvimento de Aplicações para o Google App Engine (CPBR5)
 
Desenvolvimento de aplicações para o Google App Engine
Desenvolvimento de aplicações para o Google App EngineDesenvolvimento de aplicações para o Google App Engine
Desenvolvimento de aplicações para o Google App Engine
 
Google Analytics Reporting API: Bebendo água direto da fonte
Google Analytics Reporting API: Bebendo água direto da fonteGoogle Analytics Reporting API: Bebendo água direto da fonte
Google Analytics Reporting API: Bebendo água direto da fonte
 
ASP.NET MVC - Alexandre Tarifa
ASP.NET MVC - Alexandre TarifaASP.NET MVC - Alexandre Tarifa
ASP.NET MVC - Alexandre Tarifa
 
ASP.NET MVC
ASP.NET MVCASP.NET MVC
ASP.NET MVC
 
AngularJS com NODE.JS e Socket.IO
AngularJS com NODE.JS e Socket.IOAngularJS com NODE.JS e Socket.IO
AngularJS com NODE.JS e Socket.IO
 
ApresentaçãO Mvc
ApresentaçãO MvcApresentaçãO Mvc
ApresentaçãO Mvc
 
Apresentação M V C
Apresentação M V CApresentação M V C
Apresentação M V C
 
Hello vue
Hello vueHello vue
Hello vue
 
Desenvolvendo aplicativos web com o google app engine
Desenvolvendo aplicativos web com o google app engineDesenvolvendo aplicativos web com o google app engine
Desenvolvendo aplicativos web com o google app engine
 
Google apps script - Parte - 1
Google apps script - Parte - 1Google apps script - Parte - 1
Google apps script - Parte - 1
 
Javascript truquesmagicos
Javascript truquesmagicosJavascript truquesmagicos
Javascript truquesmagicos
 
04_Introducao_JavaScript.pdf
04_Introducao_JavaScript.pdf04_Introducao_JavaScript.pdf
04_Introducao_JavaScript.pdf
 

Mais de Cristiano Pires Martins (9)

Aula 08 - árvores
Aula 08 - árvoresAula 08 - árvores
Aula 08 - árvores
 
Aula 01 introdução
Aula 01   introduçãoAula 01   introdução
Aula 01 introdução
 
Aula 03 esquema de cores
Aula 03   esquema de coresAula 03   esquema de cores
Aula 03 esquema de cores
 
Aula 07-oac-processadores
Aula 07-oac-processadoresAula 07-oac-processadores
Aula 07-oac-processadores
 
Aula 06-oac-memoria-principal
Aula 06-oac-memoria-principalAula 06-oac-memoria-principal
Aula 06-oac-memoria-principal
 
Aula 05-oac-conceitos-de-logica-digital
Aula 05-oac-conceitos-de-logica-digitalAula 05-oac-conceitos-de-logica-digital
Aula 05-oac-conceitos-de-logica-digital
 
Aula 02-oac-historia-da-computacao-part1
Aula 02-oac-historia-da-computacao-part1Aula 02-oac-historia-da-computacao-part1
Aula 02-oac-historia-da-computacao-part1
 
Aula 10-oac-arquitetura-risc
Aula 10-oac-arquitetura-riscAula 10-oac-arquitetura-risc
Aula 10-oac-arquitetura-risc
 
Aula 06-sistemas de-arquivo
Aula 06-sistemas de-arquivoAula 06-sistemas de-arquivo
Aula 06-sistemas de-arquivo
 

Java script aula 10 - angularjs

  • 1. ANGULARJS por: Cristiano Pires Martins fonte: http://javascriptbrasil.com http://tableless.com.br http://www.w3schools.com https://www.angularjs.org http://www.devmedia.com.br
  • 2. Introdução ➤ AngularJS é o mais novo lançamento do time de desenvolvedores do Google. Diferentemente de outros frameworks JavaScript, ele adota uma abordagem mais ligada à sintaxe HTML, funcionando como uma espécie de extensão da linguagem. ➤ AngularJS is a JavaScript framework. It is a library written in JavaScript. ➤ AngularJS is distributed as a JavaScript file, and can be added to a web page with a script tag: ➤ <script src="http://ajax.googleapis.com/ajax/libs/ angularjs/1.3.14/angular.min.js"></script>
  • 3. Material ➤ Fonte: ➤ https://developers.google.com/speed/libraries/#angularjs ➤ AngularJS Home Page: https://angularjs.org/ (muito bom) ➤ AngularJS Guide: http://docs.angularjs.org/guide/overview ➤ Tutorial Oficial do AngularJS: http://docs.angularjs.org/tutorial ➤ Materiais: ➤ https://material.angularjs.org/latest/ ➤ https://github.com/angular/material-start ➤ Exemplos práticos: http://javascriptbrasil.com/2013/10/23/aprenda-angularjs-com-estes-5-exemplos-praticos/ ➤ Depuração no Chrome: ➤ https://github.com/angular/batarang ➤ Batarang - Extensão para Debug do Chrome: ➤ https://www.youtube.com/watch?v=q-7mhcHXSfM&feature=youtu.be ➤ Cursos: ➤ em vídeo: http://campus.codeschool.com/courses/shaping-up-with-angular-js/intro ➤ http://www.devmedia.com.br/exemplo-basico-usando-angularjs-curso-completo-de-angularjs-aula-2/32149 ➤ em vídeo: http://egghead.io/lessons ➤ em vídeo: https://dicasdolampada.wordpress.com/2013/10/15/videos_angularjs/
  • 5. AngularJS Extends HTML ➤ AngularJS extends HTML with ng-directives. ➤ The ng-app directive defines an AngularJS application. ➤ The ng-model directive binds the value of HTML controls (input, select, textarea) to application data. ➤ The ng-bind directive binds application data to the HTML view. http://www.w3schools.com/angular/angular_intro.asp
  • 6. Exemplo 1 <!DOCTYPE html> <html> <script src= "http://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/ angular.min.js"></script> <body> <div ng-app="" ng-init="firstName='John'"> <p>The name is <span ng-bind="firstName"></span></p> </div> </body> </html>
  • 7. Exemplo 2 <!DOCTYPE html> <html lang="en-US"> <script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/ angular.min.js"></script> <body> <div ng-app="">   <p>Name : <input type="text" ng-model="name"></p>   <h1>Hello {{name}}</h1> </div> </body> </html>
  • 8. Examples explained ➤ AngularJS starts automatically when the web page has loaded. ➤ The ng-app directive tells AngularJS that the <div> element is the "owner" of an AngularJS application. ➤ The ng-model directive binds the value of the input field to the application variable name. ➤ The ng-bind directive binds the innerHTML of the <p> element to the application variable name. http://www.w3schools.com/angular/angular_intro.asp
  • 9. AngularJS Directives ➤ As you have already seen, AngularJS directives are HTML attributes with an ng prefix. ➤ The ng-init directive initialize AngularJS application variables. http://www.w3schools.com/angular/angular_intro.asp <div ng-app="" ng-init="firstName='John'"> <p>The name is <span ng-bind="firstName"></span></p> </div>
  • 10. AngularJS Expressions ➤ AngularJS expressions are written inside double braces: {{ expression }}. ➤ AngularJS will "output" data exactly where the expression is written: <!DOCTYPE html> <html> <script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js"></script> <body> <div ng-app=""> <p>My first expression: {{ 5 + 5 }}</p> </div> </body> </html> http://www.w3schools.com/angular/angular_intro.asp
  • 11. História ➤ A versão 1.0 do AngularJS saiu em 2012. ➤ Miško Hevery, um funcionário da Google, começou a trabalhar com AngularJS em 2009. ➤ A idea foi tão boa que hoje o projeto é oficialmente apoiado pelo Google.
  • 12. Estrutura Inicial ➤ Uma aplicação web básica informando uma nova propriedade na tag do arquivo: ng-app. <html ng-app> <head> <title>Lista de compras</title> <script src="http://code.angularjs.org/1.0.1/angular-1.0.1.min.js"></script> </head> <body> </body> </html> http://tableless.com.br/criando-uma-aplicacao-simples-com-angularjs/ ➤ O atributo ng-app na tag informa que o DOM, além de HTML, é também um documento AngularJS.
  • 13. Estrutura Inicial ➤ Essa propriedade pode ser utilizada em qualquer elemento do DOM — em alguns casos, apenas uma parte do seu HTML será uma aplicação Angular. <html ng-app> <head> <title>AngularJS - Tableless</title> <script src="http://code.angularjs.org/1.0.1/angular-1.0.1.min.js"></script> </head> <body> <input type="text" ng-model="nome"> <p>Olá, Tableless! Meu nome é: {{ nome }}</p> </body> </html> http://tableless.com.br/criando-uma-aplicacao-simples-com-angularjs/ O atributo ng-app na tag informa que o DOM, além de HTML, é também um documento AngularJS. O framework define o elemento com o atributo ng-app como a raiz da aplicação.
  • 14. Explicação do Código ➤ Ao carregar o HTML no navegador e digitar qualquer coisa no input, o parágrafo é atualizado automaticamente. Perceberam: nada em JavaScript? ➤ A propriedade ng-model funciona como um canal entre a view e o form. Ela pode ser utilizada em inputs do tipo texto, selects, textareas, checkboxes e radio buttons. ➤ O model, seus dados e suas validações ficam automaticamente disponíveis no escopo da nossa aplicação. ➤ A associação de dados é feita através do famoso “bigode- bigode” ({{ }}), passando nomes presentes no escopo (o model nome). http://tableless.com.br/criando-uma-aplicacao-simples-com-angularjs/
  • 15. Enfim, javascript! ➤ Chegou a hora de escrever o primeiro código JavaScript. Criando um controller para aplicação que carrega uma lista inicial de ítens. Os ítens são armazenados no escopo da aplicação ($scope). function ListaComprasController($scope) { $scope.itens = [ {produto: 'Leite', quantidade: 2, comprado: false}, {produto: 'Cerveja', quantidade: 12, comprado: false} ]; } http://tableless.com.br/criando-uma-aplicacao-simples-com-angularjs/
  • 16. Exibindo os ítens <div ng-controller="ListaComprasController"> <table> <thead> <tr> <th>Produto</th> <th>Quantidade</th> </tr> </thead> <tbody> <tr ng-repeat="item in itens"> <td><strong>{{ item.produto }}</strong></td> <td>{{ item.quantidade }}</td> </tr> </tbody> </table> </div> http://tableless.com.br/criando-uma-aplicacao-simples-com-angularjs/ Adicionar um novo bloco HTML com a tabela de listagem dos produtos:
  • 17. Explicando ➤ Duas novidades foram apresentadas no HTML anterior: ➤ O atributo ng-controller informa o nome do controller JavaScript responsável pelo bloco contido no elemento, no caso o controller ListaComprasController definido anteriormente. ➤ O atributo ng-repeat executa um loop na variável itens declarada no escopo da aplicação, retornando cada item e imprimindo o produto e a quantidade em uma linha da tabela. O formato é: <retorno> in <coleção>. http://tableless.com.br/criando-uma-aplicacao-simples-com-angularjs/
  • 18. Adicionando Produtos ➤ Para não ficar apenas com 4 linhas de JavaScript, será adicionada uma funcionalidade que inclui ítens em na lista de compras. ➤ O primeiro passo é criar um formulário que será responsável pela ação: <form class="form-inline" name="formItem"> <input type="text" ng-model="item.produto"> <input type="number" ng-model="item.quantidade"> <button ng-click="adicionaItem()">adicionar ítem</button> </form> http://tableless.com.br/criando-uma-aplicacao-simples-com-angularjs/ O atributo ng-model está sendo utilizando novamente para definir um model para os inputs. O controller passa a receber diretamente informações sobre esses campos.
  • 19. ng-click ➤ A novidade dessa vez fica por conta do atributo ng-click, que recebe uma função que precisa ser declarada no controller: function ListaComprasController($scope) { $scope.itens = [ {produto: 'Leite', quantidade: 2, comprado: false}, {produto: 'Cerveja', quantidade: 12, comprado: false} ]; $scope.adicionaItem = function () { $scope.itens.push({produto: $scope.item.produto, quantidade: $scope.item.quantidade, comprado: false}); $scope.item.produto = $scope.item.quantidade = ''; }; } http://tableless.com.br/criando-uma-aplicacao-simples-com-angularjs/
  • 20. Explicando ➤ Ao clicar no botão, o produto é adicionado à tabela. ➤ Aqui o model poderia estar realizando diversas validações disponíveis na API do framework entre outras coisas. ➤ Porém, no exemplo, apenas foi adicionado um novo item à lista de produtos e em seguida os models foram limpos (os campos do formulário).
  • 21. Teste ➤ Por ser um framework que demanda um código JavaScript mais estruturado, fica bem simples testar essa aplicação. Utilizando Jasmine (http://tableless.com.br/testando-seu- codigo-jquery-com-jasmine-parte-1/), por exemplo, poderia facilmente testar o controller dessa forma:
  • 22. describe('Lista Compras Unitário', function () { describe('ListaComprasController', function () { beforeEach(function () { this.$scope = {}; this.controller = new ListaComprasController(this.$scope); }); it('deve criar "itens" com 2 ítens', function () { expect(this.$scope.itens.length).toBe(2); }); describe('adicionaItem', function () { it('deve adicionar um novo ítem à lista com dados do escopo', function () { this.$scope.item = {}; this.$scope.item.produto = 'Carne'; this.$scope.item.quantidade = 5; this.$scope.adicionaItem(); expect(this.$scope.itens.length).toBe(3); expect(this.$scope.itens[2].produto).toBe('Carne'); expect(this.$scope.itens[2].quantidade).toBe(5); expect(this.$scope.itens[2].comprado).toBeFalse; }); }); }); }); http://tableless.com.br/criando-uma-aplicacao-simples-com-angularjs/