On Github remialvado / pres-humantalks-knockoutjs
Un principe fort : MVVM
Model : la représentation de vos données => des POJOs sous stéroïde View : un template HTML directement dans la page. View-Model : la glue permettant un lien bi-directionnel entre les deux.Principale force : Gestion des dépendances
# Model/account.js define(["knockout", "sms-service"], function(ko, sms) { return function account(name, balance) { var self = this; self.name = ko.observable(name); self.balance = ko.observable(balance); self.status = ko.computed(function() { return self.balance() >= O ? "positive" : "negative"; }); self.message = ko.computed(function() { return self.status() === "positive" ? "vous avez encore de l'argent" : "arrêtez de dépenser autant !!"; }); self.alerte = ko.computed(function() { if (self.status() === "negative") sms.send("Alerte !", "Account balance : " + self.balance()); }); } }
# View/account.html <html> <head> <script src="knockout.js"></script> <script src="account.js"></script> </head> <body> ... <label>Balance : <input data-binding="{value: balance, valueUpdate: 'afterkeydown'}" /> </label> <p> Status : <span><% status %></span> </p> <p> Message : <span data-binding="{text: message}"></span> </p> ... </body> </html>
# Controller/bank.html define(["knockout", "Model/account"], function(ko, account) { ko.applyBindings( new account("Rémi Alvado", 0), document.querySelector("body") ); });
80% de Knockout en 7 minutes !