presenté par LAU Thierry / @laut3rry
front-end developer
pour développer des applications Web
modernes
Bonjour
<html>
Bonjour <span id="name"></span>
<input type="text"/>
</html>
window.onload = function(){
var txt = 'le monde';
var span = document.getElementById('name');
var input = document.getElementsByTagName('input')[0];
input.value = txt;
if (span.textContent || span.textContent === "") {
span.textContent = txt;
} else if(span.innerText || span.innerText === "") { // IE
span.innerText = txt;
}
input.onkeyup = function(){
if (span.textContent || span.textContent === "") {
span.textContent = input.value;
} else if(span.innerText || span.innerText === "") { // IE
span.innerText = input.value;
}
};
};
<html>
Bonjour <span id="name"></span>
<input type="text"/>
</html>
$(document).ready(function() {
var txt = 'le monde';
var $input = $('input');
var $span = $('#name');
$input.val(txt);
$span.text(txt);
$input.keyup(function (event) {
$span.text(event.target.value);
});
});
Don't Repeat Yourself
Structure
Testabilité
"AngularJS est ce que le navigateur Web aurait du être s'il avait été conçu pour des applications Web"Misko Hevery, créateur d'AngularJS
service injectable
function myController($scope, $http){
};
usage
function myController($scope, $http){
$http.get(url, options)
};
callbacks
function myController($scope, $http){
$http.get(url, options)
.success(function(data, status, headers, config){
/* do something */
})
.error(function(data, status, headers, config){
/* handle error */
});
};
http://localhost:3001/#/home
http://localhost:3001/#/movies
http://localhost:3001/#/movies/edit/1
$routeProvider
$routeProvider
.when('/route1', {
templateUrl: 'path/to/view1.html',
controller : 'view1Controller'
})
.when('/route2', {
templateUrl: 'path/to/view2.html',
controller : 'view2Controller'
})
.otherwise({
redirectTo: '/route1'
});
$scope
: seule source de vérité(60 à 80% de votre code applicatif)
Singleton qui fournit des tâches spécifiques à l'application
Exemple : $scope, $http
myModuleApp.service("MonService", function ($http, dep1, dep2, ...) {
/* utilisation de $http */
});
function myController($scope, MonService){
MonService.faireUnTruc();
};
hello
HELLO
1368730200
Jeudi 16 mai 2013 20H50
1234.562342
1 234,56 €
[Thierry, David, Nelly, Alex, Claire]
[Alex, Claire, David, Nelly, Thierry]
[pommes, pâtes, farine, PQ]
[PQ]
$scope.amount = 1234.56;
<div>{{amount}}</div> 1234.56
<div>{{amount | currency}}</div> $1,234.56
<div>{{amount | currency:"USD$"}}</div> USD$1,234.56
<html ng-app="myModule">
<div>{{name | greet}}</div> <!-- Yo Thierry -->
</html>
myModuleApp.filter('greet', function (dep1, dep2, ...) {
});
<html ng-app="myModule">
<div>{{name | greet}}</div> <!-- Yo Thierry -->
</html>
myModuleApp.filter('greet', function (dep1, dep2, ...) {
return function(value) {
return 'Yo ' + value;
};
});
<html ng-app="myModule">
<div>{{name | greet:true}}</div> <!-- Bonjour Thierry -->
</html>
myModuleApp.filter('greet', function (dep1, dep2, ...) {
return function(value, isPolite) {
if(isPolite){
return 'Bonjour ' + value;
} else {
return 'Yo ' + value;
}
};
});
Etendre le langage HTML
Créer des composants réutilisables
<div navbar ></div>
<navbar></navbar>
<div class="navbar" ></div>
<!-- directive : navbar -->
<ul class="nav-tabs">
<li class="active">
<a href="#">Primary tab</a>
</li>
<li>
<a href="#">Primary tab</a>
</li>
<li>
<a href="#">Primary tab</a>
</li>
</ul>
<tabs>
<pane title="Primary tab" active>
<!-- contenu -->
</pane>
<pane title="Secondary tab">
<!-- contenu -->
</pane>
<pane title="some other tab">
<!-- contenu -->
</pane>
</tabs>
<calendar></calendar>
<progress-bar></progress-bar>
<dialog></dialog>
<datepicker></datepicker>
<accordion></accordion>
<demo> </demo>
$scope.$apply()
pour notifier angularJS qu'une valeur a été mise à jour
twitter : @laut3rry
google + : http://gplus.to/lauthierry