<html>
<head>
<title>AngularJs - ToDo App</title>
</head>
<body>
</body>
</html>
Utilizando diretivas
Diretivas são extensões da linguagem HTML que nos permitem definições
de novos comportamentos de forma declarativa
ngApp
Definindo as fronteiras da aplicação
<html>
<head>
<meta charset="utf-8">
<title>AngularJs - ToDo App</title>
<script src="js/angular.min.js"></script>
</head>
<body>
</body>
</html>
<html ng-app="todoApp">
<head>
<meta charset="utf-8">
<title>AngularJs - ToDo App</title>
<script src="js/angular.min.js"></script>
</head>
<body>
</body>
</html>
<html ng-app='todoApp'>
<head>
<meta charset='utf-8'>
<title>AngularJs - ToDo App</title>
<script src='js/angular.min.js'></script>
</head>
<script>
angular.module('todoApp',[]);
</script>
<body>
</body>
</html>
ngController
Vincula um elemento da View ao Controller
<html ng-app='todoApp'>
<head>
<meta charset='utf-8'>
<title>AngularJs - ToDo App</title>
<script src='js/angular.min.js'></script>
</head>
<script>
angular.module('todoApp',[]);
angular.module('todoApp').controller('mainCtrl',function($scope){
$scope.app = ‘Hello world’;
});
</script>
<body>
<div ng-controller="mainCtrl">
{{app}}
</div>
</body>
</html>
ngBind
Substitui o elemento por uma expressão
<html ng-app='todoApp'>
<head>
<meta charset='utf-8'>
<title>AngularJs - ToDo App</title>
<script src='js/angular.min.js'></script>
</head>
<script>
angular.module('todoApp',[]);
angular.module('todoApp').controller('mainCtrl',function($scope){
$scope.app = ‘Hello world’;
});
</script>
<body>
<div ng-controller="mainCtrl">
<span ng-bind="app"></span>
</div>
</body>
</html>
<html ng-app='todoApp'>
<head>
<meta charset='utf-8'>
<title>AngularJs - ToDo App</title>
<script src='js/angular.min.js'></script>
<link rel="stylesheet" href="css/bootstrap.css">
</head>
<script>
angular.module('todoApp',[]);
angular.module('todoApp').controller('mainCtrl',function($scope){
$scope.app = 'Todo App';
});
</script>
<body>
<div ng-controller="mainCtrl">
<div class="jumbotron">
{{app}}
</div>
</div>
</body>
</html>
ngRepeat
Iterando sobre os itens de uma coleção
<script>
angular.module('todoApp',[]);
angular.module('todoApp').controller('mainCtrl',function($scope){
$scope.app = 'Todo App';
$scope.todos = [
{afazer:'Reunião',quando:'Quarta'},
{afazer:'Lavar o carro',quando:'Terça'},
{afazer:'Tozar cachorro',quando:'Quinta'}
];
});
</script>
<body>
<div ng-controller="mainCtrl">
<div class="jumbotron">
<h3>{{app}}</h3>
<table class="table table-striped">
<tr>
<th>A fazer</th>
</tr>
<tr ng-repeat="todo in todos">
<td>{{todo.afazer}}</td>
</tr>
</table>
</div>
</div>
</body>
</html>
ngModel
Vincula uma propriedade ao $scope
<body>
<div ng-controller="mainCtrl">
<div class="jumbotron">
<h3>{{app}}</h3>
<table class="table table-striped">
<tr>
<th>A fazer</th>
</tr>
<tr ng-repeat="todo in todos">
<td>{{todo.afazer}}</td>
</tr>
</table>
<input class="form-control" type="text" ng-model="tarefas.afazer"
placeholder="Tarefa">
</div>
</div>
</body>
ngClick
Atribui um comportamento ao evento de click
<body>
<div ng-controller="mainCtrl">
<div class="jumbotron">
<h3>{{app}}</h3>
<table class="table table-striped">
<tr>
<th>A fazer</th>
</tr>
<tr ng-repeat="todo in todos">
<td>{{todo.afazer}}</td>
</tr>
</table>
<input class="form-control" type="text" ng-model="tarefa.afazer"
placeholder="Tarefa">
<input class="btn btn-primary btn-block" ng-click="novaTarefa(tarefa)" type="button"
value="salvar">
</div>
</div>
</body>
<script>
angular.module('todoApp',[]);
angular.module('todoApp').controller('mainCtrl',function($scope){
$scope.app = 'Todo App';
$scope.todos = [
{afazer:'Reunião'},
{afazer:'Lavar o carro'},
{afazer:'Tozar cachorro'}
];
$scope.novaTarefa = function(tarefa){
console.log($scope.tarefas);
$scope.todos.push(angular.copy(tarefa) );
delete $scope.tarefa;
}
});
</script>
ngDisabled
Desabilita dinamicamente um elemento
<body>
<div ng-controller="mainCtrl">
<div class="jumbotron">
<h3>{{app}}</h3>
<table class="table table-striped">
<tr>
<th>A fazer</th>
</tr>
<tr ng-repeat="todo in todos">
<td>{{todo.afazer}}</td>
</tr>
</table>
<input class="form-control" type="text" ng-
model="tarefa.afazer" placeholder="Tarefa">
<input class="btn btn-primary btn-block" ng-
disabled="!tarefa.afazer" ng-click="novaTarefa(tarefa)" type="button"
value="salvar">
</div>
</div>
</body>
ngOptions
Renderiza as opções de um select
<script>
angular.module('todoApp',[]);
angular.module('todoApp').controller('mainCtrl',function($scope){
$scope.app = 'Todo App';
$scope.todos = [
{afazer:'Lavar o carro'},
{afazer:'Tozar cachorro'}
];
$scope.novaTarefa = function(tarefa){
$scope.todos.push(angular.copy(tarefa) );
delete $scope.tarefa;
}
$scope.diasdasemana = [
{nome:"Segunda-feira", abrev:"Seg",semana:"meio de
semana"},
{nome:"Terça-feira", abrev:"Ter",semana:"meio de
semana"},
{nome:"Quarta-feira", abrev:"Qua",semana:"meio de
semana"},
{nome:"Quinta-feira", abrev:"Qui",semana:"meio de
semana"},
{nome:"Sexta-feira", abrev:"Sex",semana:"meio de
semana"},
<div ng-controller="mainCtrl">
<div class="jumbotron">
<h3>{{app}}</h3>
<table class="table table-striped">
<tr>
<th>A fazer</th>
<th>Dia</th>
</tr>
<tr ng-repeat="todo in todos">
<td>{{todo.afazer}}</td>
<td>{{todo.dia.nome}}</td>
</tr>
</table>
<input class="form-control" type="text" ng-model="tarefa.afazer"
placeholder="Tarefa">
<select class="form-control" ng-model="tarefa.dia" ng-
options="dias.nome group by dias.semana for dias in diasdasemana">
<option value="">Selecione um dia da semana </option>
</select>
<input class="btn btn-primary btn-block" ng-
disabled="!tarefa.afazer" ng-click="novaTarefa(tarefa)" type="button"
value="salvar">
{{tarefa}}
<div class="jumbotron">
<h3>{{app}}</h3>
<table class="table table-striped">
<tr>
<th>A fazer</th>
<th>Dia</th>
</tr>
<tr ng-repeat="todo in todos">
<td>{{todo.afazer}}</td>
<td>{{todo.dia.nome}}</td>
</tr>
</table>
<input class="form-control" type="text" ng-
model="tarefa.afazer" placeholder="Tarefa">
<select class="form-control" ng-model="tarefa.dia" ng-
options="dias.abrev as dias.nome group by dias.semana for dias in diasdasemana">
<option value="">Selecione um dia da semana </option>
</select>
<input class="btn btn-primary btn-block" ng-
disabled="!tarefa.afazer" ng-click="novaTarefa(tarefa)" type="button"
value="salvar">
{{tarefa}}
</div>
ngClass
Aplicando classe e estilos dinamicamente
<table class="table table-striped">
<tr>
<th></th>
<th>A fazer</th>
<th>Dia</th>
</tr>
<tr ng-class="{concluido:todo.concluida}"ng-
repeat="todo in todos">
<td> <input type="checkbox" ng-
model="todo.concluida" /> </td>
<td>{{todo.afazer}}</td>
<td>{{todo.dia.nome}}</td>
</tr>
</table>
<table class="table table-striped">
<tr>
<th></th>
<th>A fazer</th>
<th>Dia</th>
</tr>
<tr ng-
class="{concluido:todo.concluida,italico:todo.concluida}"ng-repeat="todo in
todos">
<td> <input type="checkbox" ng-
model="todo.concluida" /> </td>
<td>{{todo.afazer}}</td>
<td>{{todo.dia.nome}}</td>
</tr>
</table>
<table class="table table-striped">
<tr>
<th></th>
<th>A fazer</th>
<th>Dia</th>
</tr>
<tr ng-class="{'concluido
italico':todo.concluida}"ng-repeat="todo in todos">
<td> <input type="checkbox" ng-
model="todo.concluida" /> </td>
<td>{{todo.afazer}}</td>
<td>{{todo.dia.nome}}</td>
</tr>
</table>
<select class="form-control" ng-model="todo.dia" ng-
options="dias.nome group by dias.semana for dias in diasdasemana">
<option value="">Selecione um dia da semana </option>
</select>
<input class="btn btn-primary btn-block" ng-
disabled="!todo.afazer" ng-click="novaTarefa(todo)" type="button" value="salvar">
<input class="btn btn-danger btn-block" ng-
click="excluirTarefas(todos)" type="button" value="Remover concluidos"/>
</div>
Validação de formulários
Fazendo validações de campos de
formulários
<form name="formTodos">
<table class="table table-striped">
<tr>
<th></th>
<th>A fazer</th>
<th>Dia</th>
<th>Data</th>
</tr>
<tr ng-class="{'concluido
italico':todo.concluida}"ng-repeat="todo in todos">
<td> <input type="checkbox" ng-
model="todo.concluida" /> </td>
<td>{{todo.afazer}}</td>
<td>{{todo.dia.nome}}</td>
</tr>
</table>
<input class="form-control" type="text" ng-
model="todo.afazer" placeholder="Tarefa">
<select class="form-control" ng-model="todo.dia"
ng-options="dias.nome group by dias.semana for dias in diasdasemana">
$valid e $invalid
Consultando a validade de um campo ou
formulário
<h3>{{app}}</h3>
É valido {{formTodos.$valid}}
<br>
É invalido {{formTodos.$invalid}}
<form name="formTodos">
<table class="table table-striped">
<tr>
<th></th>
<th>A fazer</th>
<th>Dia</th>
<th>Data</th>
</tr>
<tr ng-class="{'concluido
italico':todo.concluida}"ng-repeat="todo in todos">
<td> <input type="checkbox" ng-
model="todo.concluida" /> </td>
<td>{{todo.afazer}}</td>
<td>{{todo.dia.nome}}</td>
</tr>
</table>
<input class="form-control" type="text" ng-
model="todo.afazer" placeholder="Tarefa" ng-required="true">
<input class="form-control" name="afazer"
type="text" ng-model="todo.afazer" placeholder="Tarefa" ng-required="true">
<select class="form-control" ng-model="todo.dia"
ng-options="dias.nome group by dias.semana for dias in diasdasemana">
<option value="">Selecione um dia da semana
</option>
</select>
<input class="btn btn-primary btn-block" ng-
disabled="formTodos.afazer.$invalid" ng-click="novaTarefa(todo)" type="button"
value="salvar">
Filtros
Transforma o resultado de uma expressão,
realizando operações como formatação de datas,
conversão de moedas ordenação de Arrays
uppercase
Transforma uma string em maiúsculas
<table class="table table-striped">
<tr>
<th></th>
<th>A fazer</th>
<th>Dia</th>
</tr>
<tr ng-class="{'concluido
italico':todo.concluida}"ng-repeat="todo in todos">
<td> <input type="checkbox" ng-
model="todo.concluida" /> </td>
<td>{{todo.afazer |
uppercase}}</td>
<td>{{todo.dia.nome}}</td>
</tr>
</table>
<input class="form-c
Filter
Filtra o resultado de uma expressão
<form name="formTodos">
<input class="form-control" type="text" ng-
model="busca" placeholder="Buscar">
<table class="table table-striped">
<tr>
<th></th>
<th>A fazer</th>
<th>Dia</th>
<th>Data</th>
</tr>
<tr ng-class="{'concluido
italico':todo.concluida}"ng-repeat="todo in todos | filter:busca">
<td> <input type="checkbox" ng-
model="todo.concluida" /> </td>
<td>{{todo.afazer}}</td>
<td>{{todo.dia.nome}}</td>
<td>{{todo.data}}</td>
</tr>
</table>
Integração com back end
$http
- get(url,config)
- post(url,data,config)
- put(url,data,config)
- delete(url,config)
- head(url,config)
- jsonp(url,config)
angular.module('todoApp').controller('mainCtrl',function($scope,$http){
$scope.app = 'Todo App';
$http.get('http://localhost:3412/todos').success(function(resp){
$scope.todos = resp;
console.log(resp);
}).error(function(err){
});
angular.module('todoApp').controller('mainCtrl',function($scope,$http){
$scope.app = 'Todo App';
$http.get('http://localhost:3412/todos').success(function(resp){
$scope.todos = resp;
console.log(resp);
}).error(function(err){
});
$scope.novaTarefa = function(todo){
$scope.todos.push(angular.copy(todo) );
delete $scope.todo;
}
$http.get('http://localhost:3412/dias').success(function(resp){
$scope.diasdasemana= resp;
console.log(resp);
}).error(function(err){
});
Organizando o projeto
Specific Style
Criando Serviços
Um serviço é um “singleton”, ou seja , um
objeto único criado na inicialização da
aplicação e que está disponível para ser
injetado em outros componentes
Factory
angular.module('todoApp').factory('todosAPI',function($http){
var _getTodos = function(){
return $http.get('http://localhost:3412/todos');
}
var _saveTodo = function(todo){
http.post('http://localhost:3412/todos',todo);
}
return{
getTodos : _getTodos,
saveTodo : _saveTodo
}
});
angular.module('todoApp').controller('mainCtrl',function($scope,todosAPI){
$scope.app = 'Todo App';
todosAPI.getTodos().success(function(resp){
$scope.todos = resp;
console.log(resp);
}).error(function(err){
});
Service
angular.module('todoApp').service('diassemanaAPI',function($http){
var _getDias = function(){
return $http.get('http://localhost:3412/dias');
}
this.getDias = _getDias;
});
angular.module('todoApp').controller('mainCtrl',function($scope,todosAPI,diasseman
aAPI){
$scope.app = 'Todo App';
todosAPI.getTodos().success(function(resp){
$scope.todos = resp;
console.log(resp);
}).error(function(err){
});
$scope.novaTarefa = function(todo){
$scope.todos.push(angular.copy(todo) );
delete $scope.todo;
}
diassemanaAPI.getDias().success(function(resp){
$scope.diasdasemana= resp;
console.log(resp);
}).error(function(err){
});
Value
angular.module('todoApp').value('config',{
baseUrl : "http://localhost:3412"
})
Provider
angular.module('todoApp').provider('serial',function(){
var tamanho = 5;
this.setTamanhoSerial = function(tam){
tamanho = tam
}
this.$get = function(){
return{
gerar : function(){
var serial="";
while(serial.length < tamanho){
serial+=
String.fromCharCode(Math.floor(Math.random() * 64) + 32);
}
return serial;
}
}
}
})
angular.module('todoApp').config(function(serialProvider){
serialProvider.setTamanhoSerial(10);
})
Criando Filtros
angular.module('todoApp').filter('etc',function(){
return function(input){
}
})
angular.module('todoApp').filter('etc',function(){
return function(input, tamanho){
if(input)
input = input.substr(0, tamanho || 3)+'...'
return input;
}
})
Criando Diretivas
angular.module('todoApp').directive('todoAlert',function(){
return{
template : '<div class="todo-alerta">{{erro}}</div>'
}
})
angular.module('todoApp').directive('todoAlert',function(){
return{
templateUrl : '<div class="todo-alerta">{{erro}}</div>'
}
})
Single Page Application
<html ng-app="todoApp">
<head>
<meta charset="utf-8">
<title>TODO - APP</title>
<script src="angular-1.6.0/angular.js"></script>
<link
href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"
rel="stylesheet" integrity="sha384-
BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u"
crossorigin="anonymous">
</head>
<body >
<div ng-view></div>
</body>
angular.module('todoApp').config(function($routeProvider){
$routeProvider.when('/',{
templateUrl : 'templates/principal.html'
}).when('/novo',{
templateUrl : 'templates/novo.html'
})
$routeProvider.otherwise({redirectTo:'/'})
});
Email : junqueira.andre33@gmail.com
Git : https://github.com/andreluisjunqueira
Twitter:@junqueiraandre1
Angular js

Angular js