by Ciro Nunes / @cironunesdev
#AngularJSSP 20 de Junho '14
Hello {{ person }}
angular.module('myApp', []);
Qual é a feature que possibilita programar UIs de forma declarativas?
Hoje vamos falar sobre componentes (ou diretivas) AngularJS
$ bower search angular-ui
$ bower install angular-ui --save
angular.module('myApp', ['ui']);
Crie um módulo para suas diretivas
angular.module('myDirectives', []);
Inclua esse módulo no módulo da aplicação
angular.module('myApp', ['myDirectives']);
angular.module('myDirectives')
.directive('myGreet', function() {
return {
restrict: 'A', // já vamos falar sobre isso!
template: 'Hello World!
'
};
});
Atributos:
restrict: 'A'
Elementos:
restrict: 'E'
Atributos e elementos:
restrict: 'AE'
angular.module('myDirectives', [])
.directive('myGreet', function() {
return {
restrict: 'E',
template: 'Hello World!
'
};
});
Vamos deixar as coisas um pouco mais dinâmicas...
.controller('MyCtrl', function($scope) {
$scope.person = 'SP';
})
.directive('myGreet', function() {
return {
restrict: 'E'
template: 'Hello {{ person }}!
'
};
});
Não herdam dos seus pais
Componentes devem ser reutilizáveis
angular.module('myDirectives', [])
.controller('MyCtrl', function() {
$scope.person = 'John';
})
.directive('myGreet', function() {
return {
restrict: 'E',
template: 'Hello {{ person }}!
',
scope: {
person: '@'
}
};
});
scope: {
person: '@', // top-down
age: '=', // two-way data-binding
sayHello: '&' // bottom-up
}
Onde a manipulação do DOM deve ser feita
app.directive('myGreet', function() {
return {
restrict: 'E',
template: /* snip */,
link: function($scope, $element, $attrs) {
$element.on('click', function() {
// do something
});
}
}
});
Compile: cria a diretiva prepara uma linkFn
Link: liga a diretiva ao escopo usando a linkFn
Title
Lorem ipsum dolor sit amet
.directive('myModal', function() {
return {
restrict: 'E',
transclude: true,
template: '' +
' ' +
''
}
});
#1 Convenção de nomenclatura
#2 Encapsulamento
#3 Customização
Protip: Use um generator!
#1 Crie um repositório
#2 bower init
#3 Crie seu componente seguindo as boas práticas
#4 Não se esqueça dos testes!
#5 bower publish
is hiring Front-end Engineers
mailto:cnunes@questrade.com