SPA Jumpstart - Angular - 5 - Diretivas Customizadas
-
Upload
wesley-lemos -
Category
Software
-
view
191 -
download
2
description
Transcript of SPA Jumpstart - Angular - 5 - Diretivas Customizadas
![Page 1: SPA Jumpstart - Angular - 5 - Diretivas Customizadas](https://reader036.fdocumentos.tips/reader036/viewer/2022082514/558bb0f5d8b42a7e408b4773/html5/thumbnails/1.jpg)
Criando Diretivas
![Page 2: SPA Jumpstart - Angular - 5 - Diretivas Customizadas](https://reader036.fdocumentos.tips/reader036/viewer/2022082514/558bb0f5d8b42a7e408b4773/html5/thumbnails/2.jpg)
Diretivas – CustomizadasHTML vs Diretivas
Parte mais atrativa do AngularJS
HTML muito mais claro e
compreensível
Resume tsunami de tags para linguagem de
domínio específico
<muitas-divs> Conteudo </muitas-divs>
<div><div><div> <div><div><div> <div><div><div> Conteudo </div></div></div> </div></div></div> </div></div></div>
![Page 3: SPA Jumpstart - Angular - 5 - Diretivas Customizadas](https://reader036.fdocumentos.tips/reader036/viewer/2022082514/558bb0f5d8b42a7e408b4773/html5/thumbnails/3.jpg)
Diretivas – CustomizadasPrimeira diretiva
Assim como controllers, diretivas são registradas no angular através de um módulo.
Tudo o que precisa fazer é retornar um objeto que será interpretado pelo framework
app.directive('alert', function() { return { restrict: 'EA', template:'<h2>Hello angular-directives</h2' }; });
![Page 4: SPA Jumpstart - Angular - 5 - Diretivas Customizadas](https://reader036.fdocumentos.tips/reader036/viewer/2022082514/558bb0f5d8b42a7e408b4773/html5/thumbnails/4.jpg)
Diretivas – CustomizadasRestrict
Define como ela será declarada
Deve ser uma simples string representando o tipo de declarativa
Pode escolher um tipo ou fazer combinações
Elemento:
restrict: 'E',
<alert/>
Atributo:
restrict: 'A',
<div alert><div/>
Classe:
restrict: 'C',
<div class="alert"><div/>
Misto:
restrict: 'EA',
<alert alert/>
![Page 5: SPA Jumpstart - Angular - 5 - Diretivas Customizadas](https://reader036.fdocumentos.tips/reader036/viewer/2022082514/558bb0f5d8b42a7e408b4773/html5/thumbnails/5.jpg)
Diretivas – CustomizadasTemplate / templateUrl Basicamente inclui o template apontado no conteúdo do elemento.
return { template:'<h2>Hello angular-directives</h2>', templateUrl:'alert-template.html' };
![Page 6: SPA Jumpstart - Angular - 5 - Diretivas Customizadas](https://reader036.fdocumentos.tips/reader036/viewer/2022082514/558bb0f5d8b42a7e408b4773/html5/thumbnails/6.jpg)
Diretivas – CustomizadasTransclude
Permite adicionar conteúdo dentro do elemento da diretiva
return { transclude:true, };
<alert type="warning"> <strong>Aviso!</strong> Pague a conta de luz! </alert>
<div> Conteudo: <div ng-transclude></div> </div>
Diretiva: Template:
View: Output:
![Page 7: SPA Jumpstart - Angular - 5 - Diretivas Customizadas](https://reader036.fdocumentos.tips/reader036/viewer/2022082514/558bb0f5d8b42a7e408b4773/html5/thumbnails/7.jpg)
Diretivas – CustomizadasReplace
Na renderização do HTML, substitui o elemento por seu conteúdo.
return { replace:true, }; });
Diretiva: Output:
![Page 8: SPA Jumpstart - Angular - 5 - Diretivas Customizadas](https://reader036.fdocumentos.tips/reader036/viewer/2022082514/558bb0f5d8b42a7e408b4773/html5/thumbnails/8.jpg)
Diretivas – CustomizadasLink
Praticamente o controlador da diretiva
“Liga” o DOM ao escopo da diretiva
return { link:function(scope, element, attributes) {
} };
![Page 9: SPA Jumpstart - Angular - 5 - Diretivas Customizadas](https://reader036.fdocumentos.tips/reader036/viewer/2022082514/558bb0f5d8b42a7e408b4773/html5/thumbnails/9.jpg)
Diretivas – CustomizadasLink
Parametros Scope ElementAttribute
s
return { link:function(scope, element, attributes) { var type = attributes.type; element.addClass('alert-' + type); } };
![Page 10: SPA Jumpstart - Angular - 5 - Diretivas Customizadas](https://reader036.fdocumentos.tips/reader036/viewer/2022082514/558bb0f5d8b42a7e408b4773/html5/thumbnails/10.jpg)
Diretivas – CustomizadasScope
Porta-
voz
Strings “@”
Objetos “=”
Functions “&”
return { scope:{} }; });
![Page 11: SPA Jumpstart - Angular - 5 - Diretivas Customizadas](https://reader036.fdocumentos.tips/reader036/viewer/2022082514/558bb0f5d8b42a7e408b4773/html5/thumbnails/11.jpg)
Diretivas – CustomizadasScope - strings
Para passar uma string para a diretiva, este deve ser declarado no scope com a chave “@”;
scope: { type:'@' }
Diretiva:
<div class ="alert alert-{{type}}"></div>
Template:
<alert type="warning"></alert>
View:
![Page 12: SPA Jumpstart - Angular - 5 - Diretivas Customizadas](https://reader036.fdocumentos.tips/reader036/viewer/2022082514/558bb0f5d8b42a7e408b4773/html5/thumbnails/12.jpg)
Diretivas – CustomizadasScope - strings
app.directive('alert', function() { return { restrict: 'E', templateUrl: 'alert-template-scope.html', transclude: true, scope: { type:'@' } }; });
Diretiva:app.controller('avisoController', function() { this.avisos = [ {type:'warning', titulo: 'Aviso', descricao: 'Pague a conta de luz!' }, {type:'danger', titulo: 'Perigo', descricao: 'Pague o aluguel!' }, {type:'info', titulo: 'Info', descricao:'PH está terminando'} ]; });
Controller:
<div class ="alert alert-{{type}}"> <button type="button"class="close">×</button> <div ng-transclude></div> <label>Resposta:</label> <input ng-model="resposta" /> </div>
Template: <div ng-controller="avisoController as vm"> <div ng-repeat="item in vm.avisos"> <alert type="{{item.type}}"> <strong>{{item.titulo}}</strong> {{item.descricao}} </alert> </div> </div>
View:
![Page 13: SPA Jumpstart - Angular - 5 - Diretivas Customizadas](https://reader036.fdocumentos.tips/reader036/viewer/2022082514/558bb0f5d8b42a7e408b4773/html5/thumbnails/13.jpg)
Diretivas – CustomizadasScope - objetos
Para passar uma propriedade do controller esta deve ser declarada no scope com a chave “=”;
app.directive('alert', function() { return { restrict: 'E', templateUrl: 'alert-template-scope.html‘, scope: { aviso: '=', } }; });
<div ng-repeat="item in vm.avisos"> <alert aviso="item"></alert> </div>
<div class ="alert alert-{{aviso.type}}"> <div> <strong>{{aviso.titulo}}</strong> {{aviso.descricao}} </div></div>
Diretiva: Template:
View:
![Page 14: SPA Jumpstart - Angular - 5 - Diretivas Customizadas](https://reader036.fdocumentos.tips/reader036/viewer/2022082514/558bb0f5d8b42a7e408b4773/html5/thumbnails/14.jpg)
Diretivas – CustomizadasScope - funtions
Para passar uma função, esta deve ser declarado no scope com a chave “&”;
scope: { logtype:'&' }
<alert aviso="aviso" logtype="vm.logAlert(aviso.descricao)"> </alert>
<div class ="alert alert-{{aviso.type}}"> <button ng-click="logtype()">Log</button> </div>
self. logAlert = function (text) { alert(text); };
Diretiva: Controller:
View: Template:
Action-button
![Page 15: SPA Jumpstart - Angular - 5 - Diretivas Customizadas](https://reader036.fdocumentos.tips/reader036/viewer/2022082514/558bb0f5d8b42a7e408b4773/html5/thumbnails/15.jpg)
Wesley A.LemosLages/SC - 2014