SlideShare uma empresa Scribd logo
1 de 125
Baixar para ler offline
Présentation
de la formation
KnockoutJS
Formation KnockoutJS alphorm.com™©
Djamel BOUCHOUCHA
Formateur et Consultant .NET
Contact : contact@donext.fr
KnockoutJS
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Forum : http://forum.alphorm.com
Plan
• Présentation de votre formateur
• Qu’est ce que c’est KnockoutJS?
• Présentation de votre formation
• Le plan de la formation
Formation KnockoutJS alphorm.com™©
• Publics concernés
• Prérequis de la formation
Votre formateur
• Djamel BOUCHOUCHA
• Consultant .NET et formateur
• contact@donext.fr
• Compétences :
Web : ASP.NET, PHP, HTML5, CSS3, JavaScript, Web Service, WCF, RestFul, AngularJS,
Formation KnockoutJS alphorm.com™©
Web : ASP.NET, PHP, HTML5, CSS3, JavaScript, Web Service, WCF, RestFul, AngularJS,
KnockoutJS
Autres: C#, XAML, WPF, JAVA, C++, C, SQL, Cloud (Azure), iOS, Android, WP
• Références :
Profil Linkedin : fr.linkedin.com/pub/djamel-bouchoucha/57/210/572/
Profil Alphorm : http://www.alphorm.com/formateur/djamel-bouchoucha
Mes formations sur Alphorm
Formation KnockoutJS alphorm.com™©
Qu’est ce que c’est KnockoutJS?
• Un framework permettant de créer des application riches, responsive
et des vues dynamiques à l’aide d’un modèle de données.
• Un framework permettant de séparer votre « front » en plusieurs
« couches »
• Le lien « bind » entre la vue et le modèle est effectué sur les éléments
du DOM directement. (Binding déclarative)
Formation KnockoutJS alphorm.com™©
du DOM directement. (Binding déclarative)
• Il est :
Gratuit et Open Source
Pure JavaScript (marche avec n’importe quel framework)
Léger (40 kb)
Supporte la plupart des navigateurs !
Présentation de votre formation
• Apprentissage de knockoutJS
• Création d’un projet Web Complet
• Découverte de nodejs, bower et express
Formation KnockoutJS alphorm.com™©
Le plan de la formation
• Installation des prérequis
• Présentation de Knockout
• Les bases de knockout
• Knockout avancé
Formation KnockoutJS alphorm.com™©
• Finalisation du projet
Publics concernés
• Développeur web
• Développeur WPF avec des connaissances en MVVM
• Curieux, ayant des notions de JavaScript
• Tout le monde avec un peu de travail en parallèle ☺
Formation KnockoutJS alphorm.com™©
Prérequis de la formation
• Connaissance de base du développement web :
HTML
CSS
JavaScript
• Aucun autre langage n’est nécessaire
Formation KnockoutJS alphorm.com™©
• Aucun autre langage n’est nécessaire
D’autres formations en programmation sur Alphorm
Formation KnockoutJS alphorm.com™©
Are you ready ? ☺
Formation KnockoutJS alphorm.com™©
Présentation
Le projet
Formation KnockoutJS alphorm.com™©
Djamel BOUCHOUCHA
Formateur et Consultant .NET
Contact : contact@donext.fr
Présentation
du projet
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Forum : http://forum.alphorm.com
Plan
• Gestion des contacts
• Le back-end à l’aide de nodeJS, expressJS
• Le front à l’aide de bower, jquery, bootstrap et knockoutJS
Formation KnockoutJS alphorm.com™©
Gestion des contacts
• Création/Modification de contacts
Un objet contact est composé des éléments suivants : id, nom, prénom, mail,
numéro de téléphone, adresse et date de naissance
• Création/Modification de groupe
Un groupe est un ensemble de contacts, il est représenté ainsi : id, nom du
Formation KnockoutJS alphorm.com™©
Un groupe est un ensemble de contacts, il est représenté ainsi : id, nom du
groupe, description et la liste des contacts
• Création/Modification d’un agenda
Permet de gérer les rendez-vous avec ses contacts, il est composé des
propriétés suivantes : id, lieu, date de début et date de fin du rendez-vous, et
d’une liste de contacts participant à l’événement
Back-end
• NodeJS, pour la partie serveur
• ExpressJS, pour l’exposition de la couche service au travers de nodeJS
• Aucune persistance pour le moment, à chaque redémarrage du service
les données sont perdues
Formation KnockoutJS alphorm.com™©
Front-end
• Bower gestionnaire de package
• Jquery (une dépendance de knockout.js), framework JS
• Bootstrap (pour la partie présentation), framework de présentation
• KnockoutJS
Formation KnockoutJS alphorm.com™©
Ce que l’on a couvert
• Notre projet du back-end au front-end
• Les différentes technologies que nous allons utiliser
• JavaScript à l’honneur !
Formation KnockoutJS alphorm.com™©
NodeJS
Le projet
Formation KnockoutJS alphorm.com™©
Djamel BOUCHOUCHA
Formateur et Consultant .NET
Contact : contact@donext.fr
NodeJS
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Forum : http://forum.alphorm.com
Plan
• Présentation de NodeJS
• Découverte de npm
• Installation de NodeJS
Formation KnockoutJS alphorm.com™©
Présentation
• JavaScript côté serveur (puissance et souplesse du JS côté serveur)
• Moteur d’exécution JavaScript de Chrome (V8)
• Programmation évènementielle
• Mode asynchrone (I/O)
Formation KnockoutJS alphorm.com™©
• Modulable et évolutive
• Forte communauté !
• Pour en savoir plus en attendant la formation Alphorm :
http://nodeschool.io/
Découverte de npm
• Gestionnaire de package
• Permet de partager et récupérer les contributions de la communauté
• NPM : Node Package Manager ? Non, c’est juste « npm is not an
acronym » ☺
• NodeJS pour lancer notre programme et npm pour télécharger nos
Formation KnockoutJS alphorm.com™©
• NodeJS pour lancer notre programme et npm pour télécharger nos
packages, comme express par exemple
Installation
• Aller sur https://nodejs.org/ (installation valable pour Windows/Linux et
Mac OS)
• Démo : Installation sur Windows et Linux
Formation KnockoutJS alphorm.com™©
Ce que l’on a couvert
• NodeJS et ses avantages
• Nous avons connaissance de npm
• Nous avons installé nodeJS sur Windows et Linux !
Formation KnockoutJS alphorm.com™©
Bower
Le projet
Formation KnockoutJS alphorm.com™©
Djamel BOUCHOUCHA
Formateur et Consultant .NET
Contact : contact@donext.fr
Bower
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Forum : http://forum.alphorm.com
Plan
• Présentation de Bower
• Installation de Bower
• Utilisation de Bower
Formation KnockoutJS alphorm.com™©
Présentation
• Qu’est ce qu’une dépendance ?
• Gestion de dépendance ?
• Quelles dépendances ?
Formation KnockoutJS alphorm.com™©
Installation
• Installation à l’aide de npm
•npm install –g bower
• Démo : sur windows et linux
Formation KnockoutJS alphorm.com™©
Utilisation
• Magique : bower install « something »
• Liste des packages disponibles : http://bower.io/search
Formation KnockoutJS alphorm.com™©
Ce que l’on a couvert
• L’installation et l’utilisation de bower
Formation KnockoutJS alphorm.com™©
ExpressJS
Le projet
Formation KnockoutJS alphorm.com™©
Djamel BOUCHOUCHA
Formateur et Consultant .NET
Contact : contact@donext.fr
ExpressJS
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Forum : http://forum.alphorm.com
Plan
• Présentation
• Installation
• Démo
Formation KnockoutJS alphorm.com™©
Présentation
• Comment gérer les routes sous nodeJS ?
Utilisation de if pour chaque requête ? If(page == ‘’/’’) dosomething(); else…
Utiliser un framework pour le faire proprement ? ExpressJS !
• Utilisation des templates
Formation KnockoutJS alphorm.com™©
Installation
• Grâce à npm
• La commande : npm install express --save
• Démo : sur Linux et Windows
Formation KnockoutJS alphorm.com™©
Démo
// url localhost:8888/Hello en utilisant un GET
app.get('/Hello', function (req, res) { res.send(‘Bienvenue chez Alphorm !'); });
// url localhost:8888/Hello en utilisant un POST
app.post('/Hello', function (req, res) { res.send(‘Votre ajout a bien été pris en compte, merci !'); });
Formation KnockoutJS alphorm.com™©
// url localhost:8888/Hello en utilisant un POST
app.put('/Hello', function (req, res) { res.send(‘Votre mise à jour a bien été prise en compte, merci !'); });
// url localhost:8888/Hello en utilisant un POST
app.delete('/Hello', function (req, res) { res.send(‘Votre suppression a bien été prise en compte, merci !'); });
Ce que l’on a couvert
• L’installation et l’utilisation d’ExpressJS
Formation KnockoutJS alphorm.com™©
Le Backoffice
Le projet
Formation KnockoutJS alphorm.com™©
Djamel BOUCHOUCHA
Formateur et Consultant .NET
Contact : contact@donext.fr
Le Backoffice
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Forum : http://forum.alphorm.com
Plan
• Création du projet
• Création des différentes routes
• Préparation de la partie front-end
• Démo
Formation KnockoutJS alphorm.com™©
Création du projet
• Installation de nodeJS
• Installation de bower
• Création du projet
• Installation d’ExpressJS
Formation KnockoutJS alphorm.com™©
Création des différentes routes
• Configuration d’ExpressJS
• Les routes pour la gestion des contacts
• Les routes pour la gestion des groupes
• Les routes pour la gestion des meetings
Formation KnockoutJS alphorm.com™©
Préparation de la partie front-end
• Configuration d’ExpressJS pour exposer les parties statiques du front-
end (images, css, js et html)
• Installation des différentes librairies JS/CSS à l’aide de bower
Formation KnockoutJS alphorm.com™©
Démo
• Test des différents chemins de notre API et des pages du front-end
• Avec quoi ? Le navigateur ? Postman sous chrome
Formation KnockoutJS alphorm.com™©
Ce que l’on a couvert
• Nous avons réalisé notre back-end, ce dernier sera enrichi au fur et à
mesure que nous avancerons dans notre formation
Formation KnockoutJS alphorm.com™©
Introduction
Présentation
de knockoutJS
Formation KnockoutJS alphorm.com™©
Djamel BOUCHOUCHA
Formateur et Consultant .NET
Contact : contact@donext.fr
Introduction
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Forum : http://forum.alphorm.com
Plan
• Application classique de gestion des contacts
• Utilisation d’un framework de binding
Formation KnockoutJS alphorm.com™©
Application classique de gestion des contacts
• Utilisation d’API
• Utilisation de JQuery pour remplacer les éléments dans le DOM
• Mélange de HTML et de JS
• Utilisation de framework pour assurer le binding (angularJS, KnockoutJS
etc…)
Formation KnockoutJS alphorm.com™©
etc…)
• On peut également utiliser un moteur de template (EJS, Jade, Mustache
…)
Utilisation d’un framework de binding ?
• Qu’est ce que le binding ?
• Les avantages ?
Se concentrer uniquement sur les données
Alléger les données envoyées par le serveur, juste du json ou du xml
Réutilisation du code simplifié
Formation KnockoutJS alphorm.com™©
Réutilisation du code simplifié
• Démo de binding avec AngularJS et knockoutJS
Ce que l’on a couvert
• On peut faire de différentes façons notre application, mais ici nous
allons le faire bien, nous allons le faire à l’aide de knockoutJS !
Formation KnockoutJS alphorm.com™©
Qu’est ce que
Présentation
de knockoutJS
Formation KnockoutJS alphorm.com™©
Djamel BOUCHOUCHA
Formateur et Consultant .NET
Contact : contact@donext.fr
Qu’est ce que
knockoutJS ?
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Forum : http://forum.alphorm.com
Plan
• Présentation
• Démo
Formation KnockoutJS alphorm.com™©
Présentation
• Créer un lien entre les données et la vue (le binding)
• Pourquoi ?
• Comment ?
• MVVM
Formation KnockoutJS alphorm.com™©
Démo
• Une démo de l’utilisation de knockoutJS
Formation KnockoutJS alphorm.com™©
Ce que l’on a couvert
• On est entré dans le vif du sujet ☺ en découvrant knockoutJS !
• On a vu en quoi et comment utiliser knockoutJS
Formation KnockoutJS alphorm.com™©
Pattern MVVM
Présentation
de knockoutJS
Formation KnockoutJS alphorm.com™©
Djamel BOUCHOUCHA
Formateur et Consultant .NET
Contact : contact@donext.fr
Pattern MVVM
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Forum : http://forum.alphorm.com
Plan
• Présentation
• MVVM et knockoutJS
Formation KnockoutJS alphorm.com™©
Présentation
ViewModel
Formation KnockoutJS alphorm.com™©
ModelView
MVVM et knockoutJS
• View : les différents éléments HTML, CSS et JavaScript
• ViewModel : knockoutJS, partie permettant de faire le lien entre la vue
et le modèle
• Model : back-end
Formation KnockoutJS alphorm.com™©
Ce que l’on a couvert
• Découvrir le pattern MVVM et savoir l’utiliser
Formation KnockoutJS alphorm.com™©
Prérequis
Présentation
de knockoutJS
Formation KnockoutJS alphorm.com™©
Djamel BOUCHOUCHA
Formateur et Consultant .NET
Contact : contact@donext.fr
Prérequis
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Forum : http://forum.alphorm.com
Plan
• Un peu de JavaScript
• HTML, CSS
Formation KnockoutJS alphorm.com™©
Un peu de javascript
• Les variables
• Les fonctions
• Les conditions
• Les boucles
Formation KnockoutJS alphorm.com™©
• Les tableaux
• Le scope
• Les types
HTML et CSS
• Les bases du HTML
• Les bases du CSS
• Bootstrap
Formation KnockoutJS alphorm.com™©
Ce que l’on a couvert
• Des rappels sur les bases du JavaScript, HTML et CSS
Formation KnockoutJS alphorm.com™©
Le ViewModel
Les bases de knockoutJS
Formation KnockoutJS alphorm.com™©
Djamel BOUCHOUCHA
Formateur et Consultant .NET
Contact : contact@donext.fr
Le ViewModel
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Forum : http://forum.alphorm.com
Plan
• L’importance du ViewModel
• Création du projet
• Application du ViewModel (binding)
Formation KnockoutJS alphorm.com™©
L’importance du ViewModel
• Le ViewModel expose des propriétés à la vue
• Le ViewModel transforme les données récupérées depuis la couche
« Model »
• Le ViewModel « réagit » aux actions utilisateurs
• Le ViewModel peut être réutilisé
Formation KnockoutJS alphorm.com™©
• Le ViewModel peut être réutilisé
Création du projet
• Création du fichier « index.html » et import des librairies nécessaires
• Création du fichier « contact.js »
Approche « module »
Exposition de la fonction « init » uniquement
Association de « contact.js » à « index.html »
Formation KnockoutJS alphorm.com™©
• Association de « contact.js » à « index.html »
Application du ViewModel (binding)
• Définition du ViewModel
• Association du ViewModel à knockoutJS
• Option : possibilité d’associer le « context » de binding à un élément du
DOM, par défaut sur body.
Formation KnockoutJS alphorm.com™©
var monViewModel = {
Nom: ‘James',
Age: 28
};
ko.applyBindings(monViewModel);
Ce que l’on a couvert
• Le View Model
• La création du projet
Formation KnockoutJS alphorm.com™©
Les trois fonctions
Les bases de knockoutJS
Formation KnockoutJS alphorm.com™©
Djamel BOUCHOUCHA
Formateur et Consultant .NET
Contact : contact@donext.fr
Les trois fonctions
de base
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Forum : http://forum.alphorm.com
Plan
• Observable
• ObservableArray
• Computed
Formation KnockoutJS alphorm.com™©
Observable
• Une propriété observée par knockoutJS, permet de notifier tous les
éléments « associés » en cas de changement.
• Il suffit d’associer un « objet » de type « observable » à une propriété
exposée
• Comment mettre à jour la valeur d’une propriété observable ?
Formation KnockoutJS alphorm.com™©
Nom("Nouveau") var monViewModel = {
Nom: ko.observable(‘James‘),
Age: 28
};
ko.applyBindings(monViewModel);
ObservableArray
• Même principe que pour observable, à la différence, comme son nom
l’indique, qu’elle permet de créer une propriété observable de type
tableau (Array)
• Permet d’associer n’importe quel type de tableau (numeric, chaine de
caractère, objet …)
Formation KnockoutJS alphorm.com™©
var monViewModel = {
var departements = ko.observableArray()
departements.push("Paris");
};
ko.applyBindings(monViewModel);
Computed
• Un minimum de logique dans la vue !
• Permet d’utiliser les différents observables pour exposer une nouvelle
propriété !
• Exemple : un ViewModel expose un nom et un prénom, une computed
pourrait exposer la propriété « NomComplet » pour renvoyer la
concaténation du nom et du prénom
Formation KnockoutJS alphorm.com™©
concaténation du nom et du prénom
this.nomComplet = ko.computed(function() {
return this.prenom() + " " + this.nom();
});
Ce qu’on a couvert
• Les trois fonctions de base !
• Une grande partie de vos besoins est couverte par ces trois fonctions.
• Observable, ObservableArray et computed
Formation KnockoutJS alphorm.com™©
Contrôle du texte
Les bases de knockoutJS
Formation KnockoutJS alphorm.com™©
Djamel BOUCHOUCHA
Formateur et Consultant .NET
Contact : contact@donext.fr
Contrôle du texte
et de l’apparence
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Forum : http://forum.alphorm.com
Plan
• Le contrôle de la visibilité
• Le contrôle de la génération du texte
• Le contrôle du rendu HTML
• Le contrôle du style (CSS)
Formation KnockoutJS alphorm.com™©
Le contrôle de la visibilité
• L’utilisation du paramètre « visible »
• Un « false », « 0 », « null » ou « undefined » entraine la non visibilité de
l’élément
• Un « true » ou « 1 » entraine la visibilité de l’élément
• L’utilisation de visible est comparable à l’utilisation du style « display » à
Formation KnockoutJS alphorm.com™©
• L’utilisation de visible est comparable à l’utilisation du style « display » à
none
Le contrôle de la génération du texte
• L’utilisation du paramètre « text »
• Si la propriété est différente d’un chiffre ou d’une chaine de caractères,
c’est la fonction « toString() » qui sera appelée sur l’objet.
• On peut utiliser ce paramètre pour afficher un simple message, un
message suite à un calcul, du HTML (*)
Formation KnockoutJS alphorm.com™©
• Attention avec le select/option !
Le contrôle du rendu HTML
• L’utilisation du paramètre « html »
• Différence avec le paramètre « text » ?
• C’est l’équivalent du « innerHTML » (utilisation de la fonction html() en
jQuery)
Formation KnockoutJS alphorm.com™©
Le contrôle du style (CSS)
• L’utilisation des paramètres « css » et « style »
• Le paramètre « css » lie votre objet aux paramètres de « class » des
éléments
• Le paramètre « style » lie votre objet aux paramètres de « style » des
éléments
Formation KnockoutJS alphorm.com™©
• Attention pour le style, il faut écrire « fontWeight » et non « font-
weight ». Faire sauter les « - »
Ce que l’on a couvert
• Les différentes façons de contrôler l’apparence de notre page
• Aussi bien le style que la génération de contenu
Formation KnockoutJS alphorm.com™©
Contrôle du flux
Les bases de knockoutJS
Formation KnockoutJS alphorm.com™©
Djamel BOUCHOUCHA
Formateur et Consultant .NET
Contact : contact@donext.fr
Contrôle du flux
de l’application
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Forum : http://forum.alphorm.com
Plan
• La boucle « foreach »
• Les conditions « if, else, if else, if not »
• Le binding « with »
Formation KnockoutJS alphorm.com™©
La boucle « foreach »
<table>
<thead>
<tr><th>Prénom</th>
<th>Nom</th></tr>
</thead>
<tbody data-bind="foreach: people">
<tr>
<td data-bind="text: prenom"></td>
<td data-bind="text: nom"></td>
</tr>
</tbody>
Formation KnockoutJS alphorm.com™©
</tbody>
</table>
<script type="text/javascript">
ko.applyBindings({
contact: [
{ prenom: 'Daniel', nom: 'Bazz' },
{ prenom : 'Eric', nom: 'Caen' },
{ prenom : 'Djamel', nom: 'BOUCHOUCHA' }
]
});
</script>
Les conditions « if, else, if else, if not »
• Plus simple, on met un if en place
• On peut obtenir le « else » avec la syntaxe suivante : « maVerification »
? « action en cas de réussite de la vérification » ? « autre action »
• « Ifnot » équivalent de la de différent « ! »
• Démo !
Formation KnockoutJS alphorm.com™©
• Démo !
Le binding « with »
• Context de binding ! Ne descend pas si l’élément est nul
• Accès au parent avec le mot clé « $parent »
• Accès au nœud principal avec le mot clé « $root
Formation KnockoutJS alphorm.com™©
Ce que l’on a couvert
• La gestion du flux avec knockoutJS
• On peut maintenant contrôler notre affichage et nos actions en fonction
de nos conditions !
Formation KnockoutJS alphorm.com™©
Binding avec
Les bases de knockoutJS
Formation KnockoutJS alphorm.com™©
Djamel BOUCHOUCHA
Formateur et Consultant .NET
Contact : contact@donext.fr
Binding avec
les éléments du DOM
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Forum : http://forum.alphorm.com
Plan
• L’évènement clique
• Les autres évènements
• La soumission
• L’état (activé/désactivé)
Formation KnockoutJS alphorm.com™©
• Liaison avec la saisie utilisateur
• Le focus d’un contrôle
• Checkbox et radio buttons
• Les listes déroulantes
Les évènements
• Possibilité de lier l’évènement clique à une action de votre ViewModel
• Le binding « click »
• Deux paramètres « data » et « event »
• Dans le cas d’une boucle, on récupère le « current item » (data)
<button data-bind="click: clickMe">Click me</button>
Formation KnockoutJS alphorm.com™©
• L’event est l’objet contenant des informations utilisateurs (Ex. touche en
cours)
• Empêcher la propagation de l’évènement avec l’option « clickBubble »
<button data-bind="click: myButtonHandler, clickBubble: false"> Click me </button>
Les autres évènements
• Possibilité de lier un évènement à une fonction de votre ViewModel
• Récupération du contexte de l’élément en cours
• Binding grâce au mot clé « event »
• Trois principaux events :
Formation KnockoutJS alphorm.com™©
Mouseover
Mouseout
Keypress
<div data-bind="event: { mouseover: enable, mouseout: disable }"> Mouse over :) </div>
La soumission
• Permet de contrôler la soumission de votre formulaire
• Renvoyer « true » si vous souhaitez continuer l’action normalement
• Prend en paramètre votre « formulaire »
Formation KnockoutJS alphorm.com™©
<form data-bind="submit: doSomething">
Vos différents composants <button type="submit">Envoyer</button>
</form>
<script type="text/javascript">
var viewModel = { doSomething : function(formElement) { } };
</script>
L’état (activé/désactivé)
• Permet de gérer l’état d’un contrôle
• Mot-clé « enable »
<p> Votre adresse : <input type='text' data-bind="value: adresse, enable:
canEditAdresse" /> </p>
Formation KnockoutJS alphorm.com™©
canEditAdresse" /> </p>
Liaison avec la saisie utilisateur
• Permet de récupérer la saisie utilisateur dans un « input », « textbox » et
le choix d’un utilisateur dans un « select »
• Mot-clé « value », et « valueUpdate » en option
• ValueUpdate permet de définir la politique de mise à jour (keyup,
keypress, afterkeydown)
Formation KnockoutJS alphorm.com™©
• Mise à jour automatique à l’aide de « textInput »
• Cas spécifique pour les listes, deux slides plus loin
<p>Login: <input data-bind="value: login" /></p> <p>Mot de passe: <input type="password" data-
bind="value: pwd" /></p>
Le focus d’un contrôle
• Permet de donner le focus à un contrôle en le liant à votre ViewModel
• Mot-clé « hasFocus »
<input data-bind="hasFocus: isSelected" />
Formation KnockoutJS alphorm.com™©
Checkbox et radio buttons
• Permet de lier les choix utilisateurs à votre ViewModel
• Pour les « checkbox » c’est assez simple, on gère l’état sélectionné ou
pas
• Pour les éléments de type « radio », on bind à la valeur du contrôle
<p>Recevoir la newsletter alphorm ?: <input type="checkbox" data-bind="checked: alphormNewsletter" /></p>
<div data-bind="visible: newsletterType"> Type de newslleter :
Formation KnockoutJS alphorm.com™©
<div data-bind="visible: newsletterType"> Type de newslleter :
<div>
<input type="radio" name="newsletterType" value="dev" data-bind="checked: newsletterType" /> Développement
</div>
<div>
<input type="radio" name="flavorGroup" value="sys" data-bind="checked: newsletterType" /> Système
</div>
</div>
<script type="text/javascript">
var viewModel = {
alphormNewsletter: ko.observable(true),
newsletterType: ko.observable("dev");
};
</script>
Les listes déroulantes
• Permet de binder un tableau à un élément de type « listbox »
• Plusieurs mots-clés :
Options, liste des éléments à afficher
OptionsText, propriété du modèle qui sera utilisé pour être affiché
OptionsValue, propriété du modèle qui sera utilisé comme valeur
Formation KnockoutJS alphorm.com™©
OptionsValue, propriété du modèle qui sera utilisé comme valeur
Value, élément sélectionné, si le multi-select n’est pas activé
OptionsCaption, élément par défaut si rien n’est sélectionné
SelectedOptions, éléments sélectionnés
• Démo ☺
Ce que l’on a couvert
• Les différentes façons de se lier aux éléments du DOM
Formation KnockoutJS alphorm.com™©
Le context de binding
KnockoutJS avancé
Formation KnockoutJS alphorm.com™©
Djamel BOUCHOUCHA
Formateur et Consultant .NET
Contact : contact@donext.fr
Le context de binding
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Forum : http://forum.alphorm.com
Plan
• Qu’est ce que le context ?
• La notion de parent
• La notion de root
• La notion de data
Formation KnockoutJS alphorm.com™©
• La notion d’index
Qu’est ce le context ?
• Le contexte de binding est un objet qui fait référence au jeu de données
sur lequel vous agissez
• KnockoutJS gère pour vous la hiérarchie de contexte
Ex. : Dans une boucle de type « foreach », chaque itération aura son context
courant
Formation KnockoutJS alphorm.com™©
• Plusieurs notions existent pour gérer le context dans knockoutJS :
Récupération du context parent
Récupération du context principal
La notion de parent
• Comme son nom l’indique, il permet de récupérer le contexte du dessus
• Mot-clé « $parent », option : $parents[n], si vous voulez récupérer le
parent du parent … ☺
• Démo ☺
Formation KnockoutJS alphorm.com™©
La notion de root
• Permet de récupérer le contexte principale, en conséquent l’ensemble
de votre « VieuxModel »
• Mot clé « $root »
• Démo ☺
Formation KnockoutJS alphorm.com™©
La notion de data
• Data permet de récupérer l’objet de votre ViewModel en cours
d’utilisation
• Mot clé : $data
• Dans le cas d’un élément se trouvant à la racine, « $data » est
équivalent à « $root »
Formation KnockoutJS alphorm.com™©
• Démo ☺
La notion d’index
• Permet de récupérer la ligne d’un tableau en cours
• Valable pour le « select » et le « foreach »
• Mot clé : $index
• Démo ☺
Formation KnockoutJS alphorm.com™©
Ce que l’on a couvert
• Révision sur la notion de context
Formation KnockoutJS alphorm.com™©
Les composants
KnockoutJS avancé
Formation KnockoutJS alphorm.com™©
Djamel BOUCHOUCHA
Formateur et Consultant .NET
Contact : contact@donext.fr
Les composants
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Forum : http://forum.alphorm.com
Plan
• Qu’est ce qu’un composant ?
• Créer un composant
Formation KnockoutJS alphorm.com™©
Qu’est ce qu’un composant ?
• Un composant permet de regrouper un ensemble de contrôles en une
fonctionnalité
• Ex. : dès lors que le bouton « j’aime » de facebook a été cliqué, le
contrôle change d’état
• Il peut recevoir des paramètres (avoir son propre ViewModel)
Formation KnockoutJS alphorm.com™©
• Il peut être packagé et réutilisé
• Il a un template
Créer un composant
• Deux parties :
ViewModel, représente la partie données de votre composant
Template, représente la partie HTML de votre composant
• Démo
Formation KnockoutJS alphorm.com™©
ko.components.register('note-widget', {
viewModel: function(params) {
this.valeurSelectionner = params.value; this.vousAimez = function(vote) { this.valeurSelectionner(vote); };
},
template: '<div data-bind="visible: !valeurSelectionner()"> <img src="https://cdn4.iconfinder.com/data/icons/small-n-
flat/24/star-16.png" data-bind="click: function() { vousAimez(1); }" /> <img
src="https://cdn4.iconfinder.com/data/icons/small-n-flat/24/star-16.png" data-bind="click: function() { vousAimez(2); }"
/> <img src="https://cdn4.iconfinder.com/data/icons/small-n-flat/24/star-16.png" data-bind="click: function() {
vousAimez(3); }" /> </div> <div class="result" data-bind="visible: valeurSelectionner"> Votre vote : <strong data-
bind="text: valeurSelectionner"></strong>  </div>' });
Ce que l’on a couvert
• La création d’un composant
Formation KnockoutJS alphorm.com™©
Créer
KnockoutJS avancé
Formation KnockoutJS alphorm.com™©
Djamel BOUCHOUCHA
Formateur et Consultant .NET
Contact : contact@donext.fr
Créer
un custom binding
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Forum : http://forum.alphorm.com
Plan
• Qu’est ce qu’un custom Binding ?
• Démo
Formation KnockoutJS alphorm.com™©
Qu’est ce qu’un custom binding
• Certains éléments plus complexes, comme des éditeurs de textes riches,
des sliders, datepicker etc… ne peuvent pas être bindés à l’aide des
éléments classiques comme click ou value
• Ajouter votre custom binding
« ko.bindingHandlers.leNomDeVotreElement »
• Deux méthodes, « init » et « update »
Formation KnockoutJS alphorm.com™©
• Deux méthodes, « init » et « update »
Démo
• On va faire simple, on va faire un custom binding ensemble !
Formation KnockoutJS alphorm.com™©
Ce que l’on a couvert
• Le binding d’éléments complexes
Formation KnockoutJS alphorm.com™©
Développement
Le projet
Formation KnockoutJS alphorm.com™©
Djamel BOUCHOUCHA
Formateur et Consultant .NET
Contact : contact@donext.fr
Développement
du projet
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Forum : http://forum.alphorm.com
Plan
• Créer le projet
• Sauvegarder le ViewModel en « json »
• Charger le ViewModel depuis du « json »
Formation KnockoutJS alphorm.com™©
Création du projet
• Front-end
• Création du squelette de notre application (HTML, CSS et JS)
• Création du ViewModel
• Lien entre le ViewModel et la vue
Formation KnockoutJS alphorm.com™©
• Utilisation de la Web Api
Sauvegarder le ViewModel en « json »
• Permet de récupérer votre ViewModel en « json »
• Pour cela rien de plus simple
<pre data-bind="text: ko.toJSON($root, null, 2)"></pre>
Formation KnockoutJS alphorm.com™©
• On peut envoyer le « json » générer par knockoutJS au serveur pour le
persister
Charger le ViewModel depuis du « json »
• Permet de récupérer un ViewModel dans un état préalablement
sauvegardé
• Pour cela rien de plus simple :
Récupération du « json » depuis un serveur
Parse de la data récupéré à l’aide de JSON.parse(data)
Formation KnockoutJS alphorm.com™©
Parse de la data récupéré à l’aide de JSON.parse(data)
Utilisation du modèle récupéré
Ce que l’on a couvert
• Nous avons terminé notre programme
• Nous appris à sauvegarder notre ViewModel et le restituer
Formation KnockoutJS alphorm.com™©
Bilan
KnockoutJS
Formation KnockoutJS alphorm.com™©
Djamel BOUCHOUCHA
Formateur et Consultant .NET
Contact : contact@donext.fr
Bilan
Site : http://www.alphorm.com
Blog : http://blog.alphorm.com
Forum : http://forum.alphorm.com
Notre formation
• Nous savons désormais :
Ce qu’est knockoutJS
Lier les vues à aux modèles de données
Séparer les différentes couches qui compose une application web
Mettre à jour l’interface utilisateur en fonction de la mise à jour du modèle
Formation KnockoutJS alphorm.com™©
Mettre à jour l’interface utilisateur en fonction de la mise à jour du modèle
• Une introduction à d’autres technologies :
NodeJS
ExpressJS
Bower
See you soon !
Formation KnockoutJS alphorm.com™©

Mais conteúdo relacionado

Mais procurados

Alphorm.com Support de la Formation VMmware vSphere 6, La gestion du stockage
Alphorm.com Support de la Formation VMmware vSphere 6, La gestion du stockageAlphorm.com Support de la Formation VMmware vSphere 6, La gestion du stockage
Alphorm.com Support de la Formation VMmware vSphere 6, La gestion du stockageAlphorm
 
Alphorm.com Formation Les solutions de Haute Disponibilité sous Windows Serv...
Alphorm.com Formation Les solutions de  Haute Disponibilité sous Windows Serv...Alphorm.com Formation Les solutions de  Haute Disponibilité sous Windows Serv...
Alphorm.com Formation Les solutions de Haute Disponibilité sous Windows Serv...Alphorm
 
Alphorm.com Formation JavaFX
Alphorm.com Formation JavaFXAlphorm.com Formation JavaFX
Alphorm.com Formation JavaFXAlphorm
 
Alphorm.com Formation Windev 20 Pefectionnement
Alphorm.com Formation Windev 20 Pefectionnement Alphorm.com Formation Windev 20 Pefectionnement
Alphorm.com Formation Windev 20 Pefectionnement Alphorm
 
alphorm.com - Formation Développez des applications Web avec ASP.NET MVC 4(70...
alphorm.com - Formation Développez des applications Web avec ASP.NET MVC 4(70...alphorm.com - Formation Développez des applications Web avec ASP.NET MVC 4(70...
alphorm.com - Formation Développez des applications Web avec ASP.NET MVC 4(70...Alphorm
 
Alphorm.com-Formation windows phone 8.1
Alphorm.com-Formation windows phone 8.1Alphorm.com-Formation windows phone 8.1
Alphorm.com-Formation windows phone 8.1Alphorm
 
Alphorm.com Formation PCSoft(version20) GDS et Centres de contrôle
Alphorm.com Formation PCSoft(version20) GDS et Centres de contrôleAlphorm.com Formation PCSoft(version20) GDS et Centres de contrôle
Alphorm.com Formation PCSoft(version20) GDS et Centres de contrôleAlphorm
 
Alphorm.com - Formation programmer en Visual Basic .NET
Alphorm.com - Formation programmer en Visual Basic .NETAlphorm.com - Formation programmer en Visual Basic .NET
Alphorm.com - Formation programmer en Visual Basic .NETAlphorm
 
Alphorm.com Formation OS X 10.11 Server El Capitan, Les fondamentaux
Alphorm.com Formation OS X 10.11 Server El Capitan, Les fondamentauxAlphorm.com Formation OS X 10.11 Server El Capitan, Les fondamentaux
Alphorm.com Formation OS X 10.11 Server El Capitan, Les fondamentauxAlphorm
 
Alphorm.com support de la formation windows 10 administration des services av...
Alphorm.com support de la formation windows 10 administration des services av...Alphorm.com support de la formation windows 10 administration des services av...
Alphorm.com support de la formation windows 10 administration des services av...Alphorm
 
Alphorm.com Formation jQuery
Alphorm.com Formation jQueryAlphorm.com Formation jQuery
Alphorm.com Formation jQueryAlphorm
 
Support de la formation Android 5 , Avancé
Support de la formation Android 5 , Avancé Support de la formation Android 5 , Avancé
Support de la formation Android 5 , Avancé Alphorm
 
Alphorm.com support de la formation programmer en C# 6
Alphorm.com support de la formation programmer en C# 6Alphorm.com support de la formation programmer en C# 6
Alphorm.com support de la formation programmer en C# 6Alphorm
 
Alphorm.com Support de la Formation Git
Alphorm.com Support de la Formation Git Alphorm.com Support de la Formation Git
Alphorm.com Support de la Formation Git Alphorm
 
Alphorm.com Formation VMware Workstation 11
Alphorm.com Formation VMware Workstation 11 Alphorm.com Formation VMware Workstation 11
Alphorm.com Formation VMware Workstation 11 Alphorm
 
alphorm.com - Formation Hyper-V & SCVMM 2008 R2 (70-659)
alphorm.com - Formation Hyper-V & SCVMM 2008 R2 (70-659)alphorm.com - Formation Hyper-V & SCVMM 2008 R2 (70-659)
alphorm.com - Formation Hyper-V & SCVMM 2008 R2 (70-659)Alphorm
 
alphorm.com - Formation Microsoft PowerPoint 2013 (77-422)
alphorm.com - Formation Microsoft PowerPoint 2013 (77-422)alphorm.com - Formation Microsoft PowerPoint 2013 (77-422)
alphorm.com - Formation Microsoft PowerPoint 2013 (77-422)Alphorm
 
Alphorm.com support de la formation Drupal 8 webmaster configurateur
Alphorm.com support de la formation Drupal 8 webmaster configurateurAlphorm.com support de la formation Drupal 8 webmaster configurateur
Alphorm.com support de la formation Drupal 8 webmaster configurateurAlphorm
 
Alphorm.com Java 8: les nouveautés
Alphorm.com Java 8: les nouveautésAlphorm.com Java 8: les nouveautés
Alphorm.com Java 8: les nouveautésAlphorm
 
Alphorm.com Formation Windows Presentation Foundation avec Visual Studio 2013...
Alphorm.com Formation Windows Presentation Foundation avec Visual Studio 2013...Alphorm.com Formation Windows Presentation Foundation avec Visual Studio 2013...
Alphorm.com Formation Windows Presentation Foundation avec Visual Studio 2013...Alphorm
 

Mais procurados (20)

Alphorm.com Support de la Formation VMmware vSphere 6, La gestion du stockage
Alphorm.com Support de la Formation VMmware vSphere 6, La gestion du stockageAlphorm.com Support de la Formation VMmware vSphere 6, La gestion du stockage
Alphorm.com Support de la Formation VMmware vSphere 6, La gestion du stockage
 
Alphorm.com Formation Les solutions de Haute Disponibilité sous Windows Serv...
Alphorm.com Formation Les solutions de  Haute Disponibilité sous Windows Serv...Alphorm.com Formation Les solutions de  Haute Disponibilité sous Windows Serv...
Alphorm.com Formation Les solutions de Haute Disponibilité sous Windows Serv...
 
Alphorm.com Formation JavaFX
Alphorm.com Formation JavaFXAlphorm.com Formation JavaFX
Alphorm.com Formation JavaFX
 
Alphorm.com Formation Windev 20 Pefectionnement
Alphorm.com Formation Windev 20 Pefectionnement Alphorm.com Formation Windev 20 Pefectionnement
Alphorm.com Formation Windev 20 Pefectionnement
 
alphorm.com - Formation Développez des applications Web avec ASP.NET MVC 4(70...
alphorm.com - Formation Développez des applications Web avec ASP.NET MVC 4(70...alphorm.com - Formation Développez des applications Web avec ASP.NET MVC 4(70...
alphorm.com - Formation Développez des applications Web avec ASP.NET MVC 4(70...
 
Alphorm.com-Formation windows phone 8.1
Alphorm.com-Formation windows phone 8.1Alphorm.com-Formation windows phone 8.1
Alphorm.com-Formation windows phone 8.1
 
Alphorm.com Formation PCSoft(version20) GDS et Centres de contrôle
Alphorm.com Formation PCSoft(version20) GDS et Centres de contrôleAlphorm.com Formation PCSoft(version20) GDS et Centres de contrôle
Alphorm.com Formation PCSoft(version20) GDS et Centres de contrôle
 
Alphorm.com - Formation programmer en Visual Basic .NET
Alphorm.com - Formation programmer en Visual Basic .NETAlphorm.com - Formation programmer en Visual Basic .NET
Alphorm.com - Formation programmer en Visual Basic .NET
 
Alphorm.com Formation OS X 10.11 Server El Capitan, Les fondamentaux
Alphorm.com Formation OS X 10.11 Server El Capitan, Les fondamentauxAlphorm.com Formation OS X 10.11 Server El Capitan, Les fondamentaux
Alphorm.com Formation OS X 10.11 Server El Capitan, Les fondamentaux
 
Alphorm.com support de la formation windows 10 administration des services av...
Alphorm.com support de la formation windows 10 administration des services av...Alphorm.com support de la formation windows 10 administration des services av...
Alphorm.com support de la formation windows 10 administration des services av...
 
Alphorm.com Formation jQuery
Alphorm.com Formation jQueryAlphorm.com Formation jQuery
Alphorm.com Formation jQuery
 
Support de la formation Android 5 , Avancé
Support de la formation Android 5 , Avancé Support de la formation Android 5 , Avancé
Support de la formation Android 5 , Avancé
 
Alphorm.com support de la formation programmer en C# 6
Alphorm.com support de la formation programmer en C# 6Alphorm.com support de la formation programmer en C# 6
Alphorm.com support de la formation programmer en C# 6
 
Alphorm.com Support de la Formation Git
Alphorm.com Support de la Formation Git Alphorm.com Support de la Formation Git
Alphorm.com Support de la Formation Git
 
Alphorm.com Formation VMware Workstation 11
Alphorm.com Formation VMware Workstation 11 Alphorm.com Formation VMware Workstation 11
Alphorm.com Formation VMware Workstation 11
 
alphorm.com - Formation Hyper-V & SCVMM 2008 R2 (70-659)
alphorm.com - Formation Hyper-V & SCVMM 2008 R2 (70-659)alphorm.com - Formation Hyper-V & SCVMM 2008 R2 (70-659)
alphorm.com - Formation Hyper-V & SCVMM 2008 R2 (70-659)
 
alphorm.com - Formation Microsoft PowerPoint 2013 (77-422)
alphorm.com - Formation Microsoft PowerPoint 2013 (77-422)alphorm.com - Formation Microsoft PowerPoint 2013 (77-422)
alphorm.com - Formation Microsoft PowerPoint 2013 (77-422)
 
Alphorm.com support de la formation Drupal 8 webmaster configurateur
Alphorm.com support de la formation Drupal 8 webmaster configurateurAlphorm.com support de la formation Drupal 8 webmaster configurateur
Alphorm.com support de la formation Drupal 8 webmaster configurateur
 
Alphorm.com Java 8: les nouveautés
Alphorm.com Java 8: les nouveautésAlphorm.com Java 8: les nouveautés
Alphorm.com Java 8: les nouveautés
 
Alphorm.com Formation Windows Presentation Foundation avec Visual Studio 2013...
Alphorm.com Formation Windows Presentation Foundation avec Visual Studio 2013...Alphorm.com Formation Windows Presentation Foundation avec Visual Studio 2013...
Alphorm.com Formation Windows Presentation Foundation avec Visual Studio 2013...
 

Destaque

alphorm.com - Formation Windows Server Core 2008 (R2)
alphorm.com - Formation Windows Server Core 2008 (R2)alphorm.com - Formation Windows Server Core 2008 (R2)
alphorm.com - Formation Windows Server Core 2008 (R2)Alphorm
 
Alphorm.com Formation RDS Windows Server 2012 R2
Alphorm.com Formation RDS Windows Server 2012 R2Alphorm.com Formation RDS Windows Server 2012 R2
Alphorm.com Formation RDS Windows Server 2012 R2Alphorm
 
Alphorm.com Support de la Formation SCOM 2012 R2 avancé
Alphorm.com Support de la Formation SCOM 2012 R2 avancéAlphorm.com Support de la Formation SCOM 2012 R2 avancé
Alphorm.com Support de la Formation SCOM 2012 R2 avancéAlphorm
 
Alphorm.com Formation Angular : Avancé
Alphorm.com Formation Angular : AvancéAlphorm.com Formation Angular : Avancé
Alphorm.com Formation Angular : AvancéAlphorm
 
Alphorm.com Support de la formation Hacking & Sécurité, Expert - Vulnérabilit...
Alphorm.com Support de la formation Hacking & Sécurité, Expert - Vulnérabilit...Alphorm.com Support de la formation Hacking & Sécurité, Expert - Vulnérabilit...
Alphorm.com Support de la formation Hacking & Sécurité, Expert - Vulnérabilit...Alphorm
 
alphorm.com - Formation Linux LPIC-2
alphorm.com - Formation Linux LPIC-2alphorm.com - Formation Linux LPIC-2
alphorm.com - Formation Linux LPIC-2Alphorm
 
Alphorm.com Support de la Formation Windows Containers
Alphorm.com Support de la Formation Windows ContainersAlphorm.com Support de la Formation Windows Containers
Alphorm.com Support de la Formation Windows ContainersAlphorm
 
Alphorm.com Formation Nouveautés Windows Server 2016
Alphorm.com Formation Nouveautés Windows Server 2016Alphorm.com Formation Nouveautés Windows Server 2016
Alphorm.com Formation Nouveautés Windows Server 2016Alphorm
 
Alphorm.com Formation Dreamweaver CC pour les débutants
Alphorm.com Formation Dreamweaver CC pour les débutantsAlphorm.com Formation Dreamweaver CC pour les débutants
Alphorm.com Formation Dreamweaver CC pour les débutantsAlphorm
 
Alphorm.com Formation Security+ 1/2
Alphorm.com Formation Security+ 1/2Alphorm.com Formation Security+ 1/2
Alphorm.com Formation Security+ 1/2Alphorm
 
Alphorm.com Support de la Formation PromoxVE 4.x
Alphorm.com Support de la Formation PromoxVE 4.xAlphorm.com Support de la Formation PromoxVE 4.x
Alphorm.com Support de la Formation PromoxVE 4.xAlphorm
 
alphorm.com - Formation Windows Server Core 2012 R2 - Guide de l'Admin IT
alphorm.com - Formation Windows Server Core 2012 R2 - Guide de l'Admin ITalphorm.com - Formation Windows Server Core 2012 R2 - Guide de l'Admin IT
alphorm.com - Formation Windows Server Core 2012 R2 - Guide de l'Admin ITAlphorm
 
Alphorm.com Formation Oracle 12c DBA2 : Installation et mise à niveau
Alphorm.com Formation Oracle 12c DBA2 : Installation et mise à niveauAlphorm.com Formation Oracle 12c DBA2 : Installation et mise à niveau
Alphorm.com Formation Oracle 12c DBA2 : Installation et mise à niveauAlphorm
 
Alphorm.com Formation Docker (1/2) : Installation et Administration
Alphorm.com Formation Docker (1/2) : Installation et AdministrationAlphorm.com Formation Docker (1/2) : Installation et Administration
Alphorm.com Formation Docker (1/2) : Installation et AdministrationAlphorm
 
alphorm.com - Formation Configuration Exchange 2010 (70-662)
alphorm.com - Formation Configuration Exchange 2010 (70-662)alphorm.com - Formation Configuration Exchange 2010 (70-662)
alphorm.com - Formation Configuration Exchange 2010 (70-662)Alphorm
 
Alphorm.com-Formation MongoDB Administration
Alphorm.com-Formation MongoDB AdministrationAlphorm.com-Formation MongoDB Administration
Alphorm.com-Formation MongoDB AdministrationAlphorm
 
Alphorm.com support de la formation ms azure pour les développeurs
Alphorm.com support de la formation ms azure pour les développeursAlphorm.com support de la formation ms azure pour les développeurs
Alphorm.com support de la formation ms azure pour les développeursAlphorm
 
Alphorm.com Formation CND 2/2: Réussir la certification
Alphorm.com Formation CND 2/2: Réussir la certificationAlphorm.com Formation CND 2/2: Réussir la certification
Alphorm.com Formation CND 2/2: Réussir la certificationAlphorm
 
Alphorm.com Formation SCCM 2012 R2
Alphorm.com Formation SCCM 2012 R2Alphorm.com Formation SCCM 2012 R2
Alphorm.com Formation SCCM 2012 R2Alphorm
 
Alphorm.com Support de la Formation MDT 2013 Update 2 : Maîtrisez le déploiem...
Alphorm.com Support de la Formation MDT 2013 Update 2 : Maîtrisez le déploiem...Alphorm.com Support de la Formation MDT 2013 Update 2 : Maîtrisez le déploiem...
Alphorm.com Support de la Formation MDT 2013 Update 2 : Maîtrisez le déploiem...Alphorm
 

Destaque (20)

alphorm.com - Formation Windows Server Core 2008 (R2)
alphorm.com - Formation Windows Server Core 2008 (R2)alphorm.com - Formation Windows Server Core 2008 (R2)
alphorm.com - Formation Windows Server Core 2008 (R2)
 
Alphorm.com Formation RDS Windows Server 2012 R2
Alphorm.com Formation RDS Windows Server 2012 R2Alphorm.com Formation RDS Windows Server 2012 R2
Alphorm.com Formation RDS Windows Server 2012 R2
 
Alphorm.com Support de la Formation SCOM 2012 R2 avancé
Alphorm.com Support de la Formation SCOM 2012 R2 avancéAlphorm.com Support de la Formation SCOM 2012 R2 avancé
Alphorm.com Support de la Formation SCOM 2012 R2 avancé
 
Alphorm.com Formation Angular : Avancé
Alphorm.com Formation Angular : AvancéAlphorm.com Formation Angular : Avancé
Alphorm.com Formation Angular : Avancé
 
Alphorm.com Support de la formation Hacking & Sécurité, Expert - Vulnérabilit...
Alphorm.com Support de la formation Hacking & Sécurité, Expert - Vulnérabilit...Alphorm.com Support de la formation Hacking & Sécurité, Expert - Vulnérabilit...
Alphorm.com Support de la formation Hacking & Sécurité, Expert - Vulnérabilit...
 
alphorm.com - Formation Linux LPIC-2
alphorm.com - Formation Linux LPIC-2alphorm.com - Formation Linux LPIC-2
alphorm.com - Formation Linux LPIC-2
 
Alphorm.com Support de la Formation Windows Containers
Alphorm.com Support de la Formation Windows ContainersAlphorm.com Support de la Formation Windows Containers
Alphorm.com Support de la Formation Windows Containers
 
Alphorm.com Formation Nouveautés Windows Server 2016
Alphorm.com Formation Nouveautés Windows Server 2016Alphorm.com Formation Nouveautés Windows Server 2016
Alphorm.com Formation Nouveautés Windows Server 2016
 
Alphorm.com Formation Dreamweaver CC pour les débutants
Alphorm.com Formation Dreamweaver CC pour les débutantsAlphorm.com Formation Dreamweaver CC pour les débutants
Alphorm.com Formation Dreamweaver CC pour les débutants
 
Alphorm.com Formation Security+ 1/2
Alphorm.com Formation Security+ 1/2Alphorm.com Formation Security+ 1/2
Alphorm.com Formation Security+ 1/2
 
Alphorm.com Support de la Formation PromoxVE 4.x
Alphorm.com Support de la Formation PromoxVE 4.xAlphorm.com Support de la Formation PromoxVE 4.x
Alphorm.com Support de la Formation PromoxVE 4.x
 
alphorm.com - Formation Windows Server Core 2012 R2 - Guide de l'Admin IT
alphorm.com - Formation Windows Server Core 2012 R2 - Guide de l'Admin ITalphorm.com - Formation Windows Server Core 2012 R2 - Guide de l'Admin IT
alphorm.com - Formation Windows Server Core 2012 R2 - Guide de l'Admin IT
 
Alphorm.com Formation Oracle 12c DBA2 : Installation et mise à niveau
Alphorm.com Formation Oracle 12c DBA2 : Installation et mise à niveauAlphorm.com Formation Oracle 12c DBA2 : Installation et mise à niveau
Alphorm.com Formation Oracle 12c DBA2 : Installation et mise à niveau
 
Alphorm.com Formation Docker (1/2) : Installation et Administration
Alphorm.com Formation Docker (1/2) : Installation et AdministrationAlphorm.com Formation Docker (1/2) : Installation et Administration
Alphorm.com Formation Docker (1/2) : Installation et Administration
 
alphorm.com - Formation Configuration Exchange 2010 (70-662)
alphorm.com - Formation Configuration Exchange 2010 (70-662)alphorm.com - Formation Configuration Exchange 2010 (70-662)
alphorm.com - Formation Configuration Exchange 2010 (70-662)
 
Alphorm.com-Formation MongoDB Administration
Alphorm.com-Formation MongoDB AdministrationAlphorm.com-Formation MongoDB Administration
Alphorm.com-Formation MongoDB Administration
 
Alphorm.com support de la formation ms azure pour les développeurs
Alphorm.com support de la formation ms azure pour les développeursAlphorm.com support de la formation ms azure pour les développeurs
Alphorm.com support de la formation ms azure pour les développeurs
 
Alphorm.com Formation CND 2/2: Réussir la certification
Alphorm.com Formation CND 2/2: Réussir la certificationAlphorm.com Formation CND 2/2: Réussir la certification
Alphorm.com Formation CND 2/2: Réussir la certification
 
Alphorm.com Formation SCCM 2012 R2
Alphorm.com Formation SCCM 2012 R2Alphorm.com Formation SCCM 2012 R2
Alphorm.com Formation SCCM 2012 R2
 
Alphorm.com Support de la Formation MDT 2013 Update 2 : Maîtrisez le déploiem...
Alphorm.com Support de la Formation MDT 2013 Update 2 : Maîtrisez le déploiem...Alphorm.com Support de la Formation MDT 2013 Update 2 : Maîtrisez le déploiem...
Alphorm.com Support de la Formation MDT 2013 Update 2 : Maîtrisez le déploiem...
 

Semelhante a Alphorm.com Formation knockoutJS

Alphorm.com Formation Java, les fondamentaux
Alphorm.com Formation Java, les fondamentaux Alphorm.com Formation Java, les fondamentaux
Alphorm.com Formation Java, les fondamentaux Alphorm
 
Alphorm.com Formation Windev Mobile 20 iOS
Alphorm.com Formation Windev Mobile 20 iOSAlphorm.com Formation Windev Mobile 20 iOS
Alphorm.com Formation Windev Mobile 20 iOSAlphorm
 
Alphorm.com Formation VirtualBox
Alphorm.com Formation VirtualBoxAlphorm.com Formation VirtualBox
Alphorm.com Formation VirtualBoxAlphorm
 
Alphorm.com-Formation windows 2012 (70-410)
Alphorm.com-Formation windows 2012 (70-410)Alphorm.com-Formation windows 2012 (70-410)
Alphorm.com-Formation windows 2012 (70-410)Alphorm
 
alphorm.com - Formation HTML5, CSS 3 et JavaScript (70-480)
alphorm.com - Formation HTML5, CSS 3 et JavaScript (70-480)alphorm.com - Formation HTML5, CSS 3 et JavaScript (70-480)
alphorm.com - Formation HTML5, CSS 3 et JavaScript (70-480)Alphorm
 
Formation Windev 19,les fondamentaux
Formation Windev 19,les fondamentaux Formation Windev 19,les fondamentaux
Formation Windev 19,les fondamentaux Alphorm
 
Alphorm.com Support VMware vSphere 6, Le réseau virtuel
Alphorm.com Support VMware vSphere 6, Le réseau virtuelAlphorm.com Support VMware vSphere 6, Le réseau virtuel
Alphorm.com Support VMware vSphere 6, Le réseau virtuelAlphorm
 
Alphorm.com Formation LXC
Alphorm.com  Formation LXCAlphorm.com  Formation LXC
Alphorm.com Formation LXCAlphorm
 
HTML5 et Internet Explorer 9, est-ce réellement compatible?
HTML5 et Internet Explorer 9, est-ce réellement compatible?HTML5 et Internet Explorer 9, est-ce réellement compatible?
HTML5 et Internet Explorer 9, est-ce réellement compatible?Frédéric Harper
 
Javascript & tools
Javascript & toolsJavascript & tools
Javascript & toolsSlim Soussi
 
Alphorm.com Support de la Formation Sketchup 2016, Perfectionnement
Alphorm.com Support de la Formation Sketchup 2016, PerfectionnementAlphorm.com Support de la Formation Sketchup 2016, Perfectionnement
Alphorm.com Support de la Formation Sketchup 2016, PerfectionnementAlphorm
 
Du JavaScript dans mon projet
Du JavaScript dans mon projetDu JavaScript dans mon projet
Du JavaScript dans mon projetjollivetc
 
Alphorm.com Formation SOPHOS XG FIREWALL, Administration
Alphorm.com Formation SOPHOS XG FIREWALL, AdministrationAlphorm.com Formation SOPHOS XG FIREWALL, Administration
Alphorm.com Formation SOPHOS XG FIREWALL, AdministrationAlphorm
 
alphorm.com - Formation proxmoxVE 3
alphorm.com - Formation proxmoxVE 3alphorm.com - Formation proxmoxVE 3
alphorm.com - Formation proxmoxVE 3Alphorm
 
Alphorm.com Support de la Formation VMware vSphere 6, Les machines virtuelles
Alphorm.com Support de la Formation VMware vSphere 6, Les machines virtuellesAlphorm.com Support de la Formation VMware vSphere 6, Les machines virtuelles
Alphorm.com Support de la Formation VMware vSphere 6, Les machines virtuellesAlphorm
 
Alphorm.com Formation MySQL Administration(1Z0-883)
Alphorm.com   Formation MySQL Administration(1Z0-883)Alphorm.com   Formation MySQL Administration(1Z0-883)
Alphorm.com Formation MySQL Administration(1Z0-883)Alphorm
 
Migration de technologie J2EE vers PHP à M6Web
Migration de technologie J2EE vers PHP à M6WebMigration de technologie J2EE vers PHP à M6Web
Migration de technologie J2EE vers PHP à M6WebOlivier NOEL
 
Javascript as a first programming language : votre IC prête pour la révolution !
Javascript as a first programming language : votre IC prête pour la révolution !Javascript as a first programming language : votre IC prête pour la révolution !
Javascript as a first programming language : votre IC prête pour la révolution !VISEO
 
Alphorm.com Formation PL/SQL
Alphorm.com Formation PL/SQLAlphorm.com Formation PL/SQL
Alphorm.com Formation PL/SQLAlphorm
 

Semelhante a Alphorm.com Formation knockoutJS (20)

Alphorm.com Formation Java, les fondamentaux
Alphorm.com Formation Java, les fondamentaux Alphorm.com Formation Java, les fondamentaux
Alphorm.com Formation Java, les fondamentaux
 
Alphorm.com Formation Windev Mobile 20 iOS
Alphorm.com Formation Windev Mobile 20 iOSAlphorm.com Formation Windev Mobile 20 iOS
Alphorm.com Formation Windev Mobile 20 iOS
 
Alphorm.com Formation VirtualBox
Alphorm.com Formation VirtualBoxAlphorm.com Formation VirtualBox
Alphorm.com Formation VirtualBox
 
Alphorm.com-Formation windows 2012 (70-410)
Alphorm.com-Formation windows 2012 (70-410)Alphorm.com-Formation windows 2012 (70-410)
Alphorm.com-Formation windows 2012 (70-410)
 
alphorm.com - Formation HTML5, CSS 3 et JavaScript (70-480)
alphorm.com - Formation HTML5, CSS 3 et JavaScript (70-480)alphorm.com - Formation HTML5, CSS 3 et JavaScript (70-480)
alphorm.com - Formation HTML5, CSS 3 et JavaScript (70-480)
 
Formation Windev 19,les fondamentaux
Formation Windev 19,les fondamentaux Formation Windev 19,les fondamentaux
Formation Windev 19,les fondamentaux
 
Alphorm.com Support VMware vSphere 6, Le réseau virtuel
Alphorm.com Support VMware vSphere 6, Le réseau virtuelAlphorm.com Support VMware vSphere 6, Le réseau virtuel
Alphorm.com Support VMware vSphere 6, Le réseau virtuel
 
Alphorm.com Formation LXC
Alphorm.com  Formation LXCAlphorm.com  Formation LXC
Alphorm.com Formation LXC
 
HTML5 et Internet Explorer 9, est-ce réellement compatible?
HTML5 et Internet Explorer 9, est-ce réellement compatible?HTML5 et Internet Explorer 9, est-ce réellement compatible?
HTML5 et Internet Explorer 9, est-ce réellement compatible?
 
Cv khouloud dhouib
Cv khouloud dhouibCv khouloud dhouib
Cv khouloud dhouib
 
Javascript & tools
Javascript & toolsJavascript & tools
Javascript & tools
 
Alphorm.com Support de la Formation Sketchup 2016, Perfectionnement
Alphorm.com Support de la Formation Sketchup 2016, PerfectionnementAlphorm.com Support de la Formation Sketchup 2016, Perfectionnement
Alphorm.com Support de la Formation Sketchup 2016, Perfectionnement
 
Du JavaScript dans mon projet
Du JavaScript dans mon projetDu JavaScript dans mon projet
Du JavaScript dans mon projet
 
Alphorm.com Formation SOPHOS XG FIREWALL, Administration
Alphorm.com Formation SOPHOS XG FIREWALL, AdministrationAlphorm.com Formation SOPHOS XG FIREWALL, Administration
Alphorm.com Formation SOPHOS XG FIREWALL, Administration
 
alphorm.com - Formation proxmoxVE 3
alphorm.com - Formation proxmoxVE 3alphorm.com - Formation proxmoxVE 3
alphorm.com - Formation proxmoxVE 3
 
Alphorm.com Support de la Formation VMware vSphere 6, Les machines virtuelles
Alphorm.com Support de la Formation VMware vSphere 6, Les machines virtuellesAlphorm.com Support de la Formation VMware vSphere 6, Les machines virtuelles
Alphorm.com Support de la Formation VMware vSphere 6, Les machines virtuelles
 
Alphorm.com Formation MySQL Administration(1Z0-883)
Alphorm.com   Formation MySQL Administration(1Z0-883)Alphorm.com   Formation MySQL Administration(1Z0-883)
Alphorm.com Formation MySQL Administration(1Z0-883)
 
Migration de technologie J2EE vers PHP à M6Web
Migration de technologie J2EE vers PHP à M6WebMigration de technologie J2EE vers PHP à M6Web
Migration de technologie J2EE vers PHP à M6Web
 
Javascript as a first programming language : votre IC prête pour la révolution !
Javascript as a first programming language : votre IC prête pour la révolution !Javascript as a first programming language : votre IC prête pour la révolution !
Javascript as a first programming language : votre IC prête pour la révolution !
 
Alphorm.com Formation PL/SQL
Alphorm.com Formation PL/SQLAlphorm.com Formation PL/SQL
Alphorm.com Formation PL/SQL
 

Mais de Alphorm

Alphorm.com Formation Microsoft 365 (MS-500) : Administrateur Sécurité - Prot...
Alphorm.com Formation Microsoft 365 (MS-500) : Administrateur Sécurité - Prot...Alphorm.com Formation Microsoft 365 (MS-500) : Administrateur Sécurité - Prot...
Alphorm.com Formation Microsoft 365 (MS-500) : Administrateur Sécurité - Prot...Alphorm
 
Alphorm.com Formation Google Sheets : Créer un Tableau de Bord Collaboratif a...
Alphorm.com Formation Google Sheets : Créer un Tableau de Bord Collaboratif a...Alphorm.com Formation Google Sheets : Créer un Tableau de Bord Collaboratif a...
Alphorm.com Formation Google Sheets : Créer un Tableau de Bord Collaboratif a...Alphorm
 
Alphorm.com Formation CCNP ENCOR 350-401 (6of8) : Sécurité
Alphorm.com Formation CCNP ENCOR 350-401 (6of8) : SécuritéAlphorm.com Formation CCNP ENCOR 350-401 (6of8) : Sécurité
Alphorm.com Formation CCNP ENCOR 350-401 (6of8) : SécuritéAlphorm
 
Alphorm.com Formation Vue JS 3 : Créer une application de A à Z
Alphorm.com Formation Vue JS 3 : Créer une application de A à ZAlphorm.com Formation Vue JS 3 : Créer une application de A à Z
Alphorm.com Formation Vue JS 3 : Créer une application de A à ZAlphorm
 
Alphorm.com Formation Blockchain : Maîtriser la Conception d'Architectures
Alphorm.com Formation Blockchain : Maîtriser la Conception d'ArchitecturesAlphorm.com Formation Blockchain : Maîtriser la Conception d'Architectures
Alphorm.com Formation Blockchain : Maîtriser la Conception d'ArchitecturesAlphorm
 
Alphorm.com Formation Sage : Gestion Commerciale
Alphorm.com Formation Sage : Gestion CommercialeAlphorm.com Formation Sage : Gestion Commerciale
Alphorm.com Formation Sage : Gestion CommercialeAlphorm
 
Alphorm.com Formation PHP 8 (2/6) : L'héritage en orienté objet
Alphorm.com Formation PHP 8 (2/6) : L'héritage en orienté objetAlphorm.com Formation PHP 8 (2/6) : L'héritage en orienté objet
Alphorm.com Formation PHP 8 (2/6) : L'héritage en orienté objetAlphorm
 
Alphorm.com Formation Excel 2019 : Concevoir un Tableau de Bord Interactif
Alphorm.com Formation Excel 2019 : Concevoir un Tableau de Bord InteractifAlphorm.com Formation Excel 2019 : Concevoir un Tableau de Bord Interactif
Alphorm.com Formation Excel 2019 : Concevoir un Tableau de Bord InteractifAlphorm
 
Alphorm.com Formation Maya 3D : Créer un Design d'intérieur au Style Isométrique
Alphorm.com Formation Maya 3D : Créer un Design d'intérieur au Style IsométriqueAlphorm.com Formation Maya 3D : Créer un Design d'intérieur au Style Isométrique
Alphorm.com Formation Maya 3D : Créer un Design d'intérieur au Style IsométriqueAlphorm
 
Alphorm.com Formation VMware vSphere 7 : La Mise à Niveau
Alphorm.com Formation VMware vSphere 7 : La Mise à NiveauAlphorm.com Formation VMware vSphere 7 : La Mise à Niveau
Alphorm.com Formation VMware vSphere 7 : La Mise à NiveauAlphorm
 
Alphorm.com Formation Apprendre les bonnes pratiques de CSS avec BEM : OOCSS ...
Alphorm.com Formation Apprendre les bonnes pratiques de CSS avec BEM : OOCSS ...Alphorm.com Formation Apprendre les bonnes pratiques de CSS avec BEM : OOCSS ...
Alphorm.com Formation Apprendre les bonnes pratiques de CSS avec BEM : OOCSS ...Alphorm
 
Alphorm.com Formation Unity : Monétiser votre jeu 3D sur les plateformes Mobiles
Alphorm.com Formation Unity : Monétiser votre jeu 3D sur les plateformes MobilesAlphorm.com Formation Unity : Monétiser votre jeu 3D sur les plateformes Mobiles
Alphorm.com Formation Unity : Monétiser votre jeu 3D sur les plateformes MobilesAlphorm
 
Alphorm.com Formation PHP 8 : Les bases de la POO
Alphorm.com Formation PHP 8 : Les bases de la POOAlphorm.com Formation PHP 8 : Les bases de la POO
Alphorm.com Formation PHP 8 : Les bases de la POOAlphorm
 
Alphorm.com Formation Power BI : Transformation de Données avec DAX et Power ...
Alphorm.com Formation Power BI : Transformation de Données avec DAX et Power ...Alphorm.com Formation Power BI : Transformation de Données avec DAX et Power ...
Alphorm.com Formation Power BI : Transformation de Données avec DAX et Power ...Alphorm
 
Alphorm.com Formation Techniques de Blue Teaming : L'Essentiel pour l'Analyst...
Alphorm.com Formation Techniques de Blue Teaming : L'Essentiel pour l'Analyst...Alphorm.com Formation Techniques de Blue Teaming : L'Essentiel pour l'Analyst...
Alphorm.com Formation Techniques de Blue Teaming : L'Essentiel pour l'Analyst...Alphorm
 
Alphorm.com Formation Améliorer le développement avec CSS-in-JS _ Styled Comp...
Alphorm.com Formation Améliorer le développement avec CSS-in-JS _ Styled Comp...Alphorm.com Formation Améliorer le développement avec CSS-in-JS _ Styled Comp...
Alphorm.com Formation Améliorer le développement avec CSS-in-JS _ Styled Comp...Alphorm
 
Alphorm.com Formation Unity (6/7) : Maitriser l'Intelligence Artificielle de ...
Alphorm.com Formation Unity (6/7) : Maitriser l'Intelligence Artificielle de ...Alphorm.com Formation Unity (6/7) : Maitriser l'Intelligence Artificielle de ...
Alphorm.com Formation Unity (6/7) : Maitriser l'Intelligence Artificielle de ...Alphorm
 
Alphorm.com Formation Architecture Microservices : Jenkins et SpringBoot
Alphorm.com Formation Architecture Microservices : Jenkins et SpringBootAlphorm.com Formation Architecture Microservices : Jenkins et SpringBoot
Alphorm.com Formation Architecture Microservices : Jenkins et SpringBootAlphorm
 
Alphorm.com Formation Active Directory 2022 : Multi Sites et Services
Alphorm.com Formation Active Directory 2022 : Multi Sites et ServicesAlphorm.com Formation Active Directory 2022 : Multi Sites et Services
Alphorm.com Formation Active Directory 2022 : Multi Sites et ServicesAlphorm
 
Alphorm.com Formation Vue JS 3 : Exploiter la Composition API
Alphorm.com Formation Vue JS 3 : Exploiter la Composition APIAlphorm.com Formation Vue JS 3 : Exploiter la Composition API
Alphorm.com Formation Vue JS 3 : Exploiter la Composition APIAlphorm
 

Mais de Alphorm (20)

Alphorm.com Formation Microsoft 365 (MS-500) : Administrateur Sécurité - Prot...
Alphorm.com Formation Microsoft 365 (MS-500) : Administrateur Sécurité - Prot...Alphorm.com Formation Microsoft 365 (MS-500) : Administrateur Sécurité - Prot...
Alphorm.com Formation Microsoft 365 (MS-500) : Administrateur Sécurité - Prot...
 
Alphorm.com Formation Google Sheets : Créer un Tableau de Bord Collaboratif a...
Alphorm.com Formation Google Sheets : Créer un Tableau de Bord Collaboratif a...Alphorm.com Formation Google Sheets : Créer un Tableau de Bord Collaboratif a...
Alphorm.com Formation Google Sheets : Créer un Tableau de Bord Collaboratif a...
 
Alphorm.com Formation CCNP ENCOR 350-401 (6of8) : Sécurité
Alphorm.com Formation CCNP ENCOR 350-401 (6of8) : SécuritéAlphorm.com Formation CCNP ENCOR 350-401 (6of8) : Sécurité
Alphorm.com Formation CCNP ENCOR 350-401 (6of8) : Sécurité
 
Alphorm.com Formation Vue JS 3 : Créer une application de A à Z
Alphorm.com Formation Vue JS 3 : Créer une application de A à ZAlphorm.com Formation Vue JS 3 : Créer une application de A à Z
Alphorm.com Formation Vue JS 3 : Créer une application de A à Z
 
Alphorm.com Formation Blockchain : Maîtriser la Conception d'Architectures
Alphorm.com Formation Blockchain : Maîtriser la Conception d'ArchitecturesAlphorm.com Formation Blockchain : Maîtriser la Conception d'Architectures
Alphorm.com Formation Blockchain : Maîtriser la Conception d'Architectures
 
Alphorm.com Formation Sage : Gestion Commerciale
Alphorm.com Formation Sage : Gestion CommercialeAlphorm.com Formation Sage : Gestion Commerciale
Alphorm.com Formation Sage : Gestion Commerciale
 
Alphorm.com Formation PHP 8 (2/6) : L'héritage en orienté objet
Alphorm.com Formation PHP 8 (2/6) : L'héritage en orienté objetAlphorm.com Formation PHP 8 (2/6) : L'héritage en orienté objet
Alphorm.com Formation PHP 8 (2/6) : L'héritage en orienté objet
 
Alphorm.com Formation Excel 2019 : Concevoir un Tableau de Bord Interactif
Alphorm.com Formation Excel 2019 : Concevoir un Tableau de Bord InteractifAlphorm.com Formation Excel 2019 : Concevoir un Tableau de Bord Interactif
Alphorm.com Formation Excel 2019 : Concevoir un Tableau de Bord Interactif
 
Alphorm.com Formation Maya 3D : Créer un Design d'intérieur au Style Isométrique
Alphorm.com Formation Maya 3D : Créer un Design d'intérieur au Style IsométriqueAlphorm.com Formation Maya 3D : Créer un Design d'intérieur au Style Isométrique
Alphorm.com Formation Maya 3D : Créer un Design d'intérieur au Style Isométrique
 
Alphorm.com Formation VMware vSphere 7 : La Mise à Niveau
Alphorm.com Formation VMware vSphere 7 : La Mise à NiveauAlphorm.com Formation VMware vSphere 7 : La Mise à Niveau
Alphorm.com Formation VMware vSphere 7 : La Mise à Niveau
 
Alphorm.com Formation Apprendre les bonnes pratiques de CSS avec BEM : OOCSS ...
Alphorm.com Formation Apprendre les bonnes pratiques de CSS avec BEM : OOCSS ...Alphorm.com Formation Apprendre les bonnes pratiques de CSS avec BEM : OOCSS ...
Alphorm.com Formation Apprendre les bonnes pratiques de CSS avec BEM : OOCSS ...
 
Alphorm.com Formation Unity : Monétiser votre jeu 3D sur les plateformes Mobiles
Alphorm.com Formation Unity : Monétiser votre jeu 3D sur les plateformes MobilesAlphorm.com Formation Unity : Monétiser votre jeu 3D sur les plateformes Mobiles
Alphorm.com Formation Unity : Monétiser votre jeu 3D sur les plateformes Mobiles
 
Alphorm.com Formation PHP 8 : Les bases de la POO
Alphorm.com Formation PHP 8 : Les bases de la POOAlphorm.com Formation PHP 8 : Les bases de la POO
Alphorm.com Formation PHP 8 : Les bases de la POO
 
Alphorm.com Formation Power BI : Transformation de Données avec DAX et Power ...
Alphorm.com Formation Power BI : Transformation de Données avec DAX et Power ...Alphorm.com Formation Power BI : Transformation de Données avec DAX et Power ...
Alphorm.com Formation Power BI : Transformation de Données avec DAX et Power ...
 
Alphorm.com Formation Techniques de Blue Teaming : L'Essentiel pour l'Analyst...
Alphorm.com Formation Techniques de Blue Teaming : L'Essentiel pour l'Analyst...Alphorm.com Formation Techniques de Blue Teaming : L'Essentiel pour l'Analyst...
Alphorm.com Formation Techniques de Blue Teaming : L'Essentiel pour l'Analyst...
 
Alphorm.com Formation Améliorer le développement avec CSS-in-JS _ Styled Comp...
Alphorm.com Formation Améliorer le développement avec CSS-in-JS _ Styled Comp...Alphorm.com Formation Améliorer le développement avec CSS-in-JS _ Styled Comp...
Alphorm.com Formation Améliorer le développement avec CSS-in-JS _ Styled Comp...
 
Alphorm.com Formation Unity (6/7) : Maitriser l'Intelligence Artificielle de ...
Alphorm.com Formation Unity (6/7) : Maitriser l'Intelligence Artificielle de ...Alphorm.com Formation Unity (6/7) : Maitriser l'Intelligence Artificielle de ...
Alphorm.com Formation Unity (6/7) : Maitriser l'Intelligence Artificielle de ...
 
Alphorm.com Formation Architecture Microservices : Jenkins et SpringBoot
Alphorm.com Formation Architecture Microservices : Jenkins et SpringBootAlphorm.com Formation Architecture Microservices : Jenkins et SpringBoot
Alphorm.com Formation Architecture Microservices : Jenkins et SpringBoot
 
Alphorm.com Formation Active Directory 2022 : Multi Sites et Services
Alphorm.com Formation Active Directory 2022 : Multi Sites et ServicesAlphorm.com Formation Active Directory 2022 : Multi Sites et Services
Alphorm.com Formation Active Directory 2022 : Multi Sites et Services
 
Alphorm.com Formation Vue JS 3 : Exploiter la Composition API
Alphorm.com Formation Vue JS 3 : Exploiter la Composition APIAlphorm.com Formation Vue JS 3 : Exploiter la Composition API
Alphorm.com Formation Vue JS 3 : Exploiter la Composition API
 

Alphorm.com Formation knockoutJS

  • 1. Présentation de la formation KnockoutJS Formation KnockoutJS alphorm.com™© Djamel BOUCHOUCHA Formateur et Consultant .NET Contact : contact@donext.fr KnockoutJS Site : http://www.alphorm.com Blog : http://blog.alphorm.com Forum : http://forum.alphorm.com
  • 2. Plan • Présentation de votre formateur • Qu’est ce que c’est KnockoutJS? • Présentation de votre formation • Le plan de la formation Formation KnockoutJS alphorm.com™© • Publics concernés • Prérequis de la formation
  • 3. Votre formateur • Djamel BOUCHOUCHA • Consultant .NET et formateur • contact@donext.fr • Compétences : Web : ASP.NET, PHP, HTML5, CSS3, JavaScript, Web Service, WCF, RestFul, AngularJS, Formation KnockoutJS alphorm.com™© Web : ASP.NET, PHP, HTML5, CSS3, JavaScript, Web Service, WCF, RestFul, AngularJS, KnockoutJS Autres: C#, XAML, WPF, JAVA, C++, C, SQL, Cloud (Azure), iOS, Android, WP • Références : Profil Linkedin : fr.linkedin.com/pub/djamel-bouchoucha/57/210/572/ Profil Alphorm : http://www.alphorm.com/formateur/djamel-bouchoucha
  • 4. Mes formations sur Alphorm Formation KnockoutJS alphorm.com™©
  • 5. Qu’est ce que c’est KnockoutJS? • Un framework permettant de créer des application riches, responsive et des vues dynamiques à l’aide d’un modèle de données. • Un framework permettant de séparer votre « front » en plusieurs « couches » • Le lien « bind » entre la vue et le modèle est effectué sur les éléments du DOM directement. (Binding déclarative) Formation KnockoutJS alphorm.com™© du DOM directement. (Binding déclarative) • Il est : Gratuit et Open Source Pure JavaScript (marche avec n’importe quel framework) Léger (40 kb) Supporte la plupart des navigateurs !
  • 6. Présentation de votre formation • Apprentissage de knockoutJS • Création d’un projet Web Complet • Découverte de nodejs, bower et express Formation KnockoutJS alphorm.com™©
  • 7. Le plan de la formation • Installation des prérequis • Présentation de Knockout • Les bases de knockout • Knockout avancé Formation KnockoutJS alphorm.com™© • Finalisation du projet
  • 8. Publics concernés • Développeur web • Développeur WPF avec des connaissances en MVVM • Curieux, ayant des notions de JavaScript • Tout le monde avec un peu de travail en parallèle ☺ Formation KnockoutJS alphorm.com™©
  • 9. Prérequis de la formation • Connaissance de base du développement web : HTML CSS JavaScript • Aucun autre langage n’est nécessaire Formation KnockoutJS alphorm.com™© • Aucun autre langage n’est nécessaire
  • 10. D’autres formations en programmation sur Alphorm Formation KnockoutJS alphorm.com™©
  • 11. Are you ready ? ☺ Formation KnockoutJS alphorm.com™©
  • 12. Présentation Le projet Formation KnockoutJS alphorm.com™© Djamel BOUCHOUCHA Formateur et Consultant .NET Contact : contact@donext.fr Présentation du projet Site : http://www.alphorm.com Blog : http://blog.alphorm.com Forum : http://forum.alphorm.com
  • 13. Plan • Gestion des contacts • Le back-end à l’aide de nodeJS, expressJS • Le front à l’aide de bower, jquery, bootstrap et knockoutJS Formation KnockoutJS alphorm.com™©
  • 14. Gestion des contacts • Création/Modification de contacts Un objet contact est composé des éléments suivants : id, nom, prénom, mail, numéro de téléphone, adresse et date de naissance • Création/Modification de groupe Un groupe est un ensemble de contacts, il est représenté ainsi : id, nom du Formation KnockoutJS alphorm.com™© Un groupe est un ensemble de contacts, il est représenté ainsi : id, nom du groupe, description et la liste des contacts • Création/Modification d’un agenda Permet de gérer les rendez-vous avec ses contacts, il est composé des propriétés suivantes : id, lieu, date de début et date de fin du rendez-vous, et d’une liste de contacts participant à l’événement
  • 15. Back-end • NodeJS, pour la partie serveur • ExpressJS, pour l’exposition de la couche service au travers de nodeJS • Aucune persistance pour le moment, à chaque redémarrage du service les données sont perdues Formation KnockoutJS alphorm.com™©
  • 16. Front-end • Bower gestionnaire de package • Jquery (une dépendance de knockout.js), framework JS • Bootstrap (pour la partie présentation), framework de présentation • KnockoutJS Formation KnockoutJS alphorm.com™©
  • 17. Ce que l’on a couvert • Notre projet du back-end au front-end • Les différentes technologies que nous allons utiliser • JavaScript à l’honneur ! Formation KnockoutJS alphorm.com™©
  • 18. NodeJS Le projet Formation KnockoutJS alphorm.com™© Djamel BOUCHOUCHA Formateur et Consultant .NET Contact : contact@donext.fr NodeJS Site : http://www.alphorm.com Blog : http://blog.alphorm.com Forum : http://forum.alphorm.com
  • 19. Plan • Présentation de NodeJS • Découverte de npm • Installation de NodeJS Formation KnockoutJS alphorm.com™©
  • 20. Présentation • JavaScript côté serveur (puissance et souplesse du JS côté serveur) • Moteur d’exécution JavaScript de Chrome (V8) • Programmation évènementielle • Mode asynchrone (I/O) Formation KnockoutJS alphorm.com™© • Modulable et évolutive • Forte communauté ! • Pour en savoir plus en attendant la formation Alphorm : http://nodeschool.io/
  • 21. Découverte de npm • Gestionnaire de package • Permet de partager et récupérer les contributions de la communauté • NPM : Node Package Manager ? Non, c’est juste « npm is not an acronym » ☺ • NodeJS pour lancer notre programme et npm pour télécharger nos Formation KnockoutJS alphorm.com™© • NodeJS pour lancer notre programme et npm pour télécharger nos packages, comme express par exemple
  • 22. Installation • Aller sur https://nodejs.org/ (installation valable pour Windows/Linux et Mac OS) • Démo : Installation sur Windows et Linux Formation KnockoutJS alphorm.com™©
  • 23. Ce que l’on a couvert • NodeJS et ses avantages • Nous avons connaissance de npm • Nous avons installé nodeJS sur Windows et Linux ! Formation KnockoutJS alphorm.com™©
  • 24. Bower Le projet Formation KnockoutJS alphorm.com™© Djamel BOUCHOUCHA Formateur et Consultant .NET Contact : contact@donext.fr Bower Site : http://www.alphorm.com Blog : http://blog.alphorm.com Forum : http://forum.alphorm.com
  • 25. Plan • Présentation de Bower • Installation de Bower • Utilisation de Bower Formation KnockoutJS alphorm.com™©
  • 26. Présentation • Qu’est ce qu’une dépendance ? • Gestion de dépendance ? • Quelles dépendances ? Formation KnockoutJS alphorm.com™©
  • 27. Installation • Installation à l’aide de npm •npm install –g bower • Démo : sur windows et linux Formation KnockoutJS alphorm.com™©
  • 28. Utilisation • Magique : bower install « something » • Liste des packages disponibles : http://bower.io/search Formation KnockoutJS alphorm.com™©
  • 29. Ce que l’on a couvert • L’installation et l’utilisation de bower Formation KnockoutJS alphorm.com™©
  • 30. ExpressJS Le projet Formation KnockoutJS alphorm.com™© Djamel BOUCHOUCHA Formateur et Consultant .NET Contact : contact@donext.fr ExpressJS Site : http://www.alphorm.com Blog : http://blog.alphorm.com Forum : http://forum.alphorm.com
  • 31. Plan • Présentation • Installation • Démo Formation KnockoutJS alphorm.com™©
  • 32. Présentation • Comment gérer les routes sous nodeJS ? Utilisation de if pour chaque requête ? If(page == ‘’/’’) dosomething(); else… Utiliser un framework pour le faire proprement ? ExpressJS ! • Utilisation des templates Formation KnockoutJS alphorm.com™©
  • 33. Installation • Grâce à npm • La commande : npm install express --save • Démo : sur Linux et Windows Formation KnockoutJS alphorm.com™©
  • 34. Démo // url localhost:8888/Hello en utilisant un GET app.get('/Hello', function (req, res) { res.send(‘Bienvenue chez Alphorm !'); }); // url localhost:8888/Hello en utilisant un POST app.post('/Hello', function (req, res) { res.send(‘Votre ajout a bien été pris en compte, merci !'); }); Formation KnockoutJS alphorm.com™© // url localhost:8888/Hello en utilisant un POST app.put('/Hello', function (req, res) { res.send(‘Votre mise à jour a bien été prise en compte, merci !'); }); // url localhost:8888/Hello en utilisant un POST app.delete('/Hello', function (req, res) { res.send(‘Votre suppression a bien été prise en compte, merci !'); });
  • 35. Ce que l’on a couvert • L’installation et l’utilisation d’ExpressJS Formation KnockoutJS alphorm.com™©
  • 36. Le Backoffice Le projet Formation KnockoutJS alphorm.com™© Djamel BOUCHOUCHA Formateur et Consultant .NET Contact : contact@donext.fr Le Backoffice Site : http://www.alphorm.com Blog : http://blog.alphorm.com Forum : http://forum.alphorm.com
  • 37. Plan • Création du projet • Création des différentes routes • Préparation de la partie front-end • Démo Formation KnockoutJS alphorm.com™©
  • 38. Création du projet • Installation de nodeJS • Installation de bower • Création du projet • Installation d’ExpressJS Formation KnockoutJS alphorm.com™©
  • 39. Création des différentes routes • Configuration d’ExpressJS • Les routes pour la gestion des contacts • Les routes pour la gestion des groupes • Les routes pour la gestion des meetings Formation KnockoutJS alphorm.com™©
  • 40. Préparation de la partie front-end • Configuration d’ExpressJS pour exposer les parties statiques du front- end (images, css, js et html) • Installation des différentes librairies JS/CSS à l’aide de bower Formation KnockoutJS alphorm.com™©
  • 41. Démo • Test des différents chemins de notre API et des pages du front-end • Avec quoi ? Le navigateur ? Postman sous chrome Formation KnockoutJS alphorm.com™©
  • 42. Ce que l’on a couvert • Nous avons réalisé notre back-end, ce dernier sera enrichi au fur et à mesure que nous avancerons dans notre formation Formation KnockoutJS alphorm.com™©
  • 43. Introduction Présentation de knockoutJS Formation KnockoutJS alphorm.com™© Djamel BOUCHOUCHA Formateur et Consultant .NET Contact : contact@donext.fr Introduction Site : http://www.alphorm.com Blog : http://blog.alphorm.com Forum : http://forum.alphorm.com
  • 44. Plan • Application classique de gestion des contacts • Utilisation d’un framework de binding Formation KnockoutJS alphorm.com™©
  • 45. Application classique de gestion des contacts • Utilisation d’API • Utilisation de JQuery pour remplacer les éléments dans le DOM • Mélange de HTML et de JS • Utilisation de framework pour assurer le binding (angularJS, KnockoutJS etc…) Formation KnockoutJS alphorm.com™© etc…) • On peut également utiliser un moteur de template (EJS, Jade, Mustache …)
  • 46. Utilisation d’un framework de binding ? • Qu’est ce que le binding ? • Les avantages ? Se concentrer uniquement sur les données Alléger les données envoyées par le serveur, juste du json ou du xml Réutilisation du code simplifié Formation KnockoutJS alphorm.com™© Réutilisation du code simplifié • Démo de binding avec AngularJS et knockoutJS
  • 47. Ce que l’on a couvert • On peut faire de différentes façons notre application, mais ici nous allons le faire bien, nous allons le faire à l’aide de knockoutJS ! Formation KnockoutJS alphorm.com™©
  • 48. Qu’est ce que Présentation de knockoutJS Formation KnockoutJS alphorm.com™© Djamel BOUCHOUCHA Formateur et Consultant .NET Contact : contact@donext.fr Qu’est ce que knockoutJS ? Site : http://www.alphorm.com Blog : http://blog.alphorm.com Forum : http://forum.alphorm.com
  • 49. Plan • Présentation • Démo Formation KnockoutJS alphorm.com™©
  • 50. Présentation • Créer un lien entre les données et la vue (le binding) • Pourquoi ? • Comment ? • MVVM Formation KnockoutJS alphorm.com™©
  • 51. Démo • Une démo de l’utilisation de knockoutJS Formation KnockoutJS alphorm.com™©
  • 52. Ce que l’on a couvert • On est entré dans le vif du sujet ☺ en découvrant knockoutJS ! • On a vu en quoi et comment utiliser knockoutJS Formation KnockoutJS alphorm.com™©
  • 53. Pattern MVVM Présentation de knockoutJS Formation KnockoutJS alphorm.com™© Djamel BOUCHOUCHA Formateur et Consultant .NET Contact : contact@donext.fr Pattern MVVM Site : http://www.alphorm.com Blog : http://blog.alphorm.com Forum : http://forum.alphorm.com
  • 54. Plan • Présentation • MVVM et knockoutJS Formation KnockoutJS alphorm.com™©
  • 56. MVVM et knockoutJS • View : les différents éléments HTML, CSS et JavaScript • ViewModel : knockoutJS, partie permettant de faire le lien entre la vue et le modèle • Model : back-end Formation KnockoutJS alphorm.com™©
  • 57. Ce que l’on a couvert • Découvrir le pattern MVVM et savoir l’utiliser Formation KnockoutJS alphorm.com™©
  • 58. Prérequis Présentation de knockoutJS Formation KnockoutJS alphorm.com™© Djamel BOUCHOUCHA Formateur et Consultant .NET Contact : contact@donext.fr Prérequis Site : http://www.alphorm.com Blog : http://blog.alphorm.com Forum : http://forum.alphorm.com
  • 59. Plan • Un peu de JavaScript • HTML, CSS Formation KnockoutJS alphorm.com™©
  • 60. Un peu de javascript • Les variables • Les fonctions • Les conditions • Les boucles Formation KnockoutJS alphorm.com™© • Les tableaux • Le scope • Les types
  • 61. HTML et CSS • Les bases du HTML • Les bases du CSS • Bootstrap Formation KnockoutJS alphorm.com™©
  • 62. Ce que l’on a couvert • Des rappels sur les bases du JavaScript, HTML et CSS Formation KnockoutJS alphorm.com™©
  • 63. Le ViewModel Les bases de knockoutJS Formation KnockoutJS alphorm.com™© Djamel BOUCHOUCHA Formateur et Consultant .NET Contact : contact@donext.fr Le ViewModel Site : http://www.alphorm.com Blog : http://blog.alphorm.com Forum : http://forum.alphorm.com
  • 64. Plan • L’importance du ViewModel • Création du projet • Application du ViewModel (binding) Formation KnockoutJS alphorm.com™©
  • 65. L’importance du ViewModel • Le ViewModel expose des propriétés à la vue • Le ViewModel transforme les données récupérées depuis la couche « Model » • Le ViewModel « réagit » aux actions utilisateurs • Le ViewModel peut être réutilisé Formation KnockoutJS alphorm.com™© • Le ViewModel peut être réutilisé
  • 66. Création du projet • Création du fichier « index.html » et import des librairies nécessaires • Création du fichier « contact.js » Approche « module » Exposition de la fonction « init » uniquement Association de « contact.js » à « index.html » Formation KnockoutJS alphorm.com™© • Association de « contact.js » à « index.html »
  • 67. Application du ViewModel (binding) • Définition du ViewModel • Association du ViewModel à knockoutJS • Option : possibilité d’associer le « context » de binding à un élément du DOM, par défaut sur body. Formation KnockoutJS alphorm.com™© var monViewModel = { Nom: ‘James', Age: 28 }; ko.applyBindings(monViewModel);
  • 68. Ce que l’on a couvert • Le View Model • La création du projet Formation KnockoutJS alphorm.com™©
  • 69. Les trois fonctions Les bases de knockoutJS Formation KnockoutJS alphorm.com™© Djamel BOUCHOUCHA Formateur et Consultant .NET Contact : contact@donext.fr Les trois fonctions de base Site : http://www.alphorm.com Blog : http://blog.alphorm.com Forum : http://forum.alphorm.com
  • 70. Plan • Observable • ObservableArray • Computed Formation KnockoutJS alphorm.com™©
  • 71. Observable • Une propriété observée par knockoutJS, permet de notifier tous les éléments « associés » en cas de changement. • Il suffit d’associer un « objet » de type « observable » à une propriété exposée • Comment mettre à jour la valeur d’une propriété observable ? Formation KnockoutJS alphorm.com™© Nom("Nouveau") var monViewModel = { Nom: ko.observable(‘James‘), Age: 28 }; ko.applyBindings(monViewModel);
  • 72. ObservableArray • Même principe que pour observable, à la différence, comme son nom l’indique, qu’elle permet de créer une propriété observable de type tableau (Array) • Permet d’associer n’importe quel type de tableau (numeric, chaine de caractère, objet …) Formation KnockoutJS alphorm.com™© var monViewModel = { var departements = ko.observableArray() departements.push("Paris"); }; ko.applyBindings(monViewModel);
  • 73. Computed • Un minimum de logique dans la vue ! • Permet d’utiliser les différents observables pour exposer une nouvelle propriété ! • Exemple : un ViewModel expose un nom et un prénom, une computed pourrait exposer la propriété « NomComplet » pour renvoyer la concaténation du nom et du prénom Formation KnockoutJS alphorm.com™© concaténation du nom et du prénom this.nomComplet = ko.computed(function() { return this.prenom() + " " + this.nom(); });
  • 74. Ce qu’on a couvert • Les trois fonctions de base ! • Une grande partie de vos besoins est couverte par ces trois fonctions. • Observable, ObservableArray et computed Formation KnockoutJS alphorm.com™©
  • 75. Contrôle du texte Les bases de knockoutJS Formation KnockoutJS alphorm.com™© Djamel BOUCHOUCHA Formateur et Consultant .NET Contact : contact@donext.fr Contrôle du texte et de l’apparence Site : http://www.alphorm.com Blog : http://blog.alphorm.com Forum : http://forum.alphorm.com
  • 76. Plan • Le contrôle de la visibilité • Le contrôle de la génération du texte • Le contrôle du rendu HTML • Le contrôle du style (CSS) Formation KnockoutJS alphorm.com™©
  • 77. Le contrôle de la visibilité • L’utilisation du paramètre « visible » • Un « false », « 0 », « null » ou « undefined » entraine la non visibilité de l’élément • Un « true » ou « 1 » entraine la visibilité de l’élément • L’utilisation de visible est comparable à l’utilisation du style « display » à Formation KnockoutJS alphorm.com™© • L’utilisation de visible est comparable à l’utilisation du style « display » à none
  • 78. Le contrôle de la génération du texte • L’utilisation du paramètre « text » • Si la propriété est différente d’un chiffre ou d’une chaine de caractères, c’est la fonction « toString() » qui sera appelée sur l’objet. • On peut utiliser ce paramètre pour afficher un simple message, un message suite à un calcul, du HTML (*) Formation KnockoutJS alphorm.com™© • Attention avec le select/option !
  • 79. Le contrôle du rendu HTML • L’utilisation du paramètre « html » • Différence avec le paramètre « text » ? • C’est l’équivalent du « innerHTML » (utilisation de la fonction html() en jQuery) Formation KnockoutJS alphorm.com™©
  • 80. Le contrôle du style (CSS) • L’utilisation des paramètres « css » et « style » • Le paramètre « css » lie votre objet aux paramètres de « class » des éléments • Le paramètre « style » lie votre objet aux paramètres de « style » des éléments Formation KnockoutJS alphorm.com™© • Attention pour le style, il faut écrire « fontWeight » et non « font- weight ». Faire sauter les « - »
  • 81. Ce que l’on a couvert • Les différentes façons de contrôler l’apparence de notre page • Aussi bien le style que la génération de contenu Formation KnockoutJS alphorm.com™©
  • 82. Contrôle du flux Les bases de knockoutJS Formation KnockoutJS alphorm.com™© Djamel BOUCHOUCHA Formateur et Consultant .NET Contact : contact@donext.fr Contrôle du flux de l’application Site : http://www.alphorm.com Blog : http://blog.alphorm.com Forum : http://forum.alphorm.com
  • 83. Plan • La boucle « foreach » • Les conditions « if, else, if else, if not » • Le binding « with » Formation KnockoutJS alphorm.com™©
  • 84. La boucle « foreach » <table> <thead> <tr><th>Prénom</th> <th>Nom</th></tr> </thead> <tbody data-bind="foreach: people"> <tr> <td data-bind="text: prenom"></td> <td data-bind="text: nom"></td> </tr> </tbody> Formation KnockoutJS alphorm.com™© </tbody> </table> <script type="text/javascript"> ko.applyBindings({ contact: [ { prenom: 'Daniel', nom: 'Bazz' }, { prenom : 'Eric', nom: 'Caen' }, { prenom : 'Djamel', nom: 'BOUCHOUCHA' } ] }); </script>
  • 85. Les conditions « if, else, if else, if not » • Plus simple, on met un if en place • On peut obtenir le « else » avec la syntaxe suivante : « maVerification » ? « action en cas de réussite de la vérification » ? « autre action » • « Ifnot » équivalent de la de différent « ! » • Démo ! Formation KnockoutJS alphorm.com™© • Démo !
  • 86. Le binding « with » • Context de binding ! Ne descend pas si l’élément est nul • Accès au parent avec le mot clé « $parent » • Accès au nœud principal avec le mot clé « $root Formation KnockoutJS alphorm.com™©
  • 87. Ce que l’on a couvert • La gestion du flux avec knockoutJS • On peut maintenant contrôler notre affichage et nos actions en fonction de nos conditions ! Formation KnockoutJS alphorm.com™©
  • 88. Binding avec Les bases de knockoutJS Formation KnockoutJS alphorm.com™© Djamel BOUCHOUCHA Formateur et Consultant .NET Contact : contact@donext.fr Binding avec les éléments du DOM Site : http://www.alphorm.com Blog : http://blog.alphorm.com Forum : http://forum.alphorm.com
  • 89. Plan • L’évènement clique • Les autres évènements • La soumission • L’état (activé/désactivé) Formation KnockoutJS alphorm.com™© • Liaison avec la saisie utilisateur • Le focus d’un contrôle • Checkbox et radio buttons • Les listes déroulantes
  • 90. Les évènements • Possibilité de lier l’évènement clique à une action de votre ViewModel • Le binding « click » • Deux paramètres « data » et « event » • Dans le cas d’une boucle, on récupère le « current item » (data) <button data-bind="click: clickMe">Click me</button> Formation KnockoutJS alphorm.com™© • L’event est l’objet contenant des informations utilisateurs (Ex. touche en cours) • Empêcher la propagation de l’évènement avec l’option « clickBubble » <button data-bind="click: myButtonHandler, clickBubble: false"> Click me </button>
  • 91. Les autres évènements • Possibilité de lier un évènement à une fonction de votre ViewModel • Récupération du contexte de l’élément en cours • Binding grâce au mot clé « event » • Trois principaux events : Formation KnockoutJS alphorm.com™© Mouseover Mouseout Keypress <div data-bind="event: { mouseover: enable, mouseout: disable }"> Mouse over :) </div>
  • 92. La soumission • Permet de contrôler la soumission de votre formulaire • Renvoyer « true » si vous souhaitez continuer l’action normalement • Prend en paramètre votre « formulaire » Formation KnockoutJS alphorm.com™© <form data-bind="submit: doSomething"> Vos différents composants <button type="submit">Envoyer</button> </form> <script type="text/javascript"> var viewModel = { doSomething : function(formElement) { } }; </script>
  • 93. L’état (activé/désactivé) • Permet de gérer l’état d’un contrôle • Mot-clé « enable » <p> Votre adresse : <input type='text' data-bind="value: adresse, enable: canEditAdresse" /> </p> Formation KnockoutJS alphorm.com™© canEditAdresse" /> </p>
  • 94. Liaison avec la saisie utilisateur • Permet de récupérer la saisie utilisateur dans un « input », « textbox » et le choix d’un utilisateur dans un « select » • Mot-clé « value », et « valueUpdate » en option • ValueUpdate permet de définir la politique de mise à jour (keyup, keypress, afterkeydown) Formation KnockoutJS alphorm.com™© • Mise à jour automatique à l’aide de « textInput » • Cas spécifique pour les listes, deux slides plus loin <p>Login: <input data-bind="value: login" /></p> <p>Mot de passe: <input type="password" data- bind="value: pwd" /></p>
  • 95. Le focus d’un contrôle • Permet de donner le focus à un contrôle en le liant à votre ViewModel • Mot-clé « hasFocus » <input data-bind="hasFocus: isSelected" /> Formation KnockoutJS alphorm.com™©
  • 96. Checkbox et radio buttons • Permet de lier les choix utilisateurs à votre ViewModel • Pour les « checkbox » c’est assez simple, on gère l’état sélectionné ou pas • Pour les éléments de type « radio », on bind à la valeur du contrôle <p>Recevoir la newsletter alphorm ?: <input type="checkbox" data-bind="checked: alphormNewsletter" /></p> <div data-bind="visible: newsletterType"> Type de newslleter : Formation KnockoutJS alphorm.com™© <div data-bind="visible: newsletterType"> Type de newslleter : <div> <input type="radio" name="newsletterType" value="dev" data-bind="checked: newsletterType" /> Développement </div> <div> <input type="radio" name="flavorGroup" value="sys" data-bind="checked: newsletterType" /> Système </div> </div> <script type="text/javascript"> var viewModel = { alphormNewsletter: ko.observable(true), newsletterType: ko.observable("dev"); }; </script>
  • 97. Les listes déroulantes • Permet de binder un tableau à un élément de type « listbox » • Plusieurs mots-clés : Options, liste des éléments à afficher OptionsText, propriété du modèle qui sera utilisé pour être affiché OptionsValue, propriété du modèle qui sera utilisé comme valeur Formation KnockoutJS alphorm.com™© OptionsValue, propriété du modèle qui sera utilisé comme valeur Value, élément sélectionné, si le multi-select n’est pas activé OptionsCaption, élément par défaut si rien n’est sélectionné SelectedOptions, éléments sélectionnés • Démo ☺
  • 98. Ce que l’on a couvert • Les différentes façons de se lier aux éléments du DOM Formation KnockoutJS alphorm.com™©
  • 99. Le context de binding KnockoutJS avancé Formation KnockoutJS alphorm.com™© Djamel BOUCHOUCHA Formateur et Consultant .NET Contact : contact@donext.fr Le context de binding Site : http://www.alphorm.com Blog : http://blog.alphorm.com Forum : http://forum.alphorm.com
  • 100. Plan • Qu’est ce que le context ? • La notion de parent • La notion de root • La notion de data Formation KnockoutJS alphorm.com™© • La notion d’index
  • 101. Qu’est ce le context ? • Le contexte de binding est un objet qui fait référence au jeu de données sur lequel vous agissez • KnockoutJS gère pour vous la hiérarchie de contexte Ex. : Dans une boucle de type « foreach », chaque itération aura son context courant Formation KnockoutJS alphorm.com™© • Plusieurs notions existent pour gérer le context dans knockoutJS : Récupération du context parent Récupération du context principal
  • 102. La notion de parent • Comme son nom l’indique, il permet de récupérer le contexte du dessus • Mot-clé « $parent », option : $parents[n], si vous voulez récupérer le parent du parent … ☺ • Démo ☺ Formation KnockoutJS alphorm.com™©
  • 103. La notion de root • Permet de récupérer le contexte principale, en conséquent l’ensemble de votre « VieuxModel » • Mot clé « $root » • Démo ☺ Formation KnockoutJS alphorm.com™©
  • 104. La notion de data • Data permet de récupérer l’objet de votre ViewModel en cours d’utilisation • Mot clé : $data • Dans le cas d’un élément se trouvant à la racine, « $data » est équivalent à « $root » Formation KnockoutJS alphorm.com™© • Démo ☺
  • 105. La notion d’index • Permet de récupérer la ligne d’un tableau en cours • Valable pour le « select » et le « foreach » • Mot clé : $index • Démo ☺ Formation KnockoutJS alphorm.com™©
  • 106. Ce que l’on a couvert • Révision sur la notion de context Formation KnockoutJS alphorm.com™©
  • 107. Les composants KnockoutJS avancé Formation KnockoutJS alphorm.com™© Djamel BOUCHOUCHA Formateur et Consultant .NET Contact : contact@donext.fr Les composants Site : http://www.alphorm.com Blog : http://blog.alphorm.com Forum : http://forum.alphorm.com
  • 108. Plan • Qu’est ce qu’un composant ? • Créer un composant Formation KnockoutJS alphorm.com™©
  • 109. Qu’est ce qu’un composant ? • Un composant permet de regrouper un ensemble de contrôles en une fonctionnalité • Ex. : dès lors que le bouton « j’aime » de facebook a été cliqué, le contrôle change d’état • Il peut recevoir des paramètres (avoir son propre ViewModel) Formation KnockoutJS alphorm.com™© • Il peut être packagé et réutilisé • Il a un template
  • 110. Créer un composant • Deux parties : ViewModel, représente la partie données de votre composant Template, représente la partie HTML de votre composant • Démo Formation KnockoutJS alphorm.com™© ko.components.register('note-widget', { viewModel: function(params) { this.valeurSelectionner = params.value; this.vousAimez = function(vote) { this.valeurSelectionner(vote); }; }, template: '<div data-bind="visible: !valeurSelectionner()"> <img src="https://cdn4.iconfinder.com/data/icons/small-n- flat/24/star-16.png" data-bind="click: function() { vousAimez(1); }" /> <img src="https://cdn4.iconfinder.com/data/icons/small-n-flat/24/star-16.png" data-bind="click: function() { vousAimez(2); }" /> <img src="https://cdn4.iconfinder.com/data/icons/small-n-flat/24/star-16.png" data-bind="click: function() { vousAimez(3); }" /> </div> <div class="result" data-bind="visible: valeurSelectionner"> Votre vote : <strong data- bind="text: valeurSelectionner"></strong> </div>' });
  • 111. Ce que l’on a couvert • La création d’un composant Formation KnockoutJS alphorm.com™©
  • 112. Créer KnockoutJS avancé Formation KnockoutJS alphorm.com™© Djamel BOUCHOUCHA Formateur et Consultant .NET Contact : contact@donext.fr Créer un custom binding Site : http://www.alphorm.com Blog : http://blog.alphorm.com Forum : http://forum.alphorm.com
  • 113. Plan • Qu’est ce qu’un custom Binding ? • Démo Formation KnockoutJS alphorm.com™©
  • 114. Qu’est ce qu’un custom binding • Certains éléments plus complexes, comme des éditeurs de textes riches, des sliders, datepicker etc… ne peuvent pas être bindés à l’aide des éléments classiques comme click ou value • Ajouter votre custom binding « ko.bindingHandlers.leNomDeVotreElement » • Deux méthodes, « init » et « update » Formation KnockoutJS alphorm.com™© • Deux méthodes, « init » et « update »
  • 115. Démo • On va faire simple, on va faire un custom binding ensemble ! Formation KnockoutJS alphorm.com™©
  • 116. Ce que l’on a couvert • Le binding d’éléments complexes Formation KnockoutJS alphorm.com™©
  • 117. Développement Le projet Formation KnockoutJS alphorm.com™© Djamel BOUCHOUCHA Formateur et Consultant .NET Contact : contact@donext.fr Développement du projet Site : http://www.alphorm.com Blog : http://blog.alphorm.com Forum : http://forum.alphorm.com
  • 118. Plan • Créer le projet • Sauvegarder le ViewModel en « json » • Charger le ViewModel depuis du « json » Formation KnockoutJS alphorm.com™©
  • 119. Création du projet • Front-end • Création du squelette de notre application (HTML, CSS et JS) • Création du ViewModel • Lien entre le ViewModel et la vue Formation KnockoutJS alphorm.com™© • Utilisation de la Web Api
  • 120. Sauvegarder le ViewModel en « json » • Permet de récupérer votre ViewModel en « json » • Pour cela rien de plus simple <pre data-bind="text: ko.toJSON($root, null, 2)"></pre> Formation KnockoutJS alphorm.com™© • On peut envoyer le « json » générer par knockoutJS au serveur pour le persister
  • 121. Charger le ViewModel depuis du « json » • Permet de récupérer un ViewModel dans un état préalablement sauvegardé • Pour cela rien de plus simple : Récupération du « json » depuis un serveur Parse de la data récupéré à l’aide de JSON.parse(data) Formation KnockoutJS alphorm.com™© Parse de la data récupéré à l’aide de JSON.parse(data) Utilisation du modèle récupéré
  • 122. Ce que l’on a couvert • Nous avons terminé notre programme • Nous appris à sauvegarder notre ViewModel et le restituer Formation KnockoutJS alphorm.com™©
  • 123. Bilan KnockoutJS Formation KnockoutJS alphorm.com™© Djamel BOUCHOUCHA Formateur et Consultant .NET Contact : contact@donext.fr Bilan Site : http://www.alphorm.com Blog : http://blog.alphorm.com Forum : http://forum.alphorm.com
  • 124. Notre formation • Nous savons désormais : Ce qu’est knockoutJS Lier les vues à aux modèles de données Séparer les différentes couches qui compose une application web Mettre à jour l’interface utilisateur en fonction de la mise à jour du modèle Formation KnockoutJS alphorm.com™© Mettre à jour l’interface utilisateur en fonction de la mise à jour du modèle • Une introduction à d’autres technologies : NodeJS ExpressJS Bower
  • 125. See you soon ! Formation KnockoutJS alphorm.com™©