SlideShare una empresa de Scribd logo
1 de 30
Descargar para leer sin conexión
Boulos Dib
September 15, 2012
MARQUEE SPONSOR
PLATINUM SPONSOR
PLATINUM SPONSOR
PLATINUM SPONSOR
GOLD SPONSORS
SILVER SPONSORS
   Independent Consultant – Napeague Inc.
   First Commercial Personal Computer 1980 – TRS-80 Model III
   First Z80 based product (Protocol Adaptor For Citibank– 1984)
   First Commercial MS-DOS product (Telex/IBM PC, 50 Baud – 1985)
   Started Windows Development using 16-bit Win 3.x
   Used: 8080/Z80, 68xxx, PDP/RSX,VAX-VMS and x86 (C, C++, C#)
   User Group/Meetup Co-Organizer:
     New York Pluralsight Study Group, XAML NYC
   Other interests:
     Windsurfing, Guitar Playing
   Introduction to Knockout & MVVM
   Built-in bindings
   Custom bindings
   Templates
   Simple development pattern.
     MVVM, aka MVVC, sometimes MVC or MVP
   Separation of concerns (Pattern)
     Separates Model and UI
     Separates Behavior and Structure
   Popular with WPF & Silverlight developers.
     Data Binding makes it easy to implement MVVM.
   The 100K foot level view, Web Application
   Models, Controllers and Views

                     Web Application
                                                           DB
       Views                Controllers       Models
        Partial Views              Routes         Services
         Partial Views              Routes          Services
            Partial Views            Routes            Services
           Code & Markup              Code              Code
   The browser level view
   HTML/CSS – JavaScript - JSON

                         Browser

       View              ViewModel              Model
     HTML & CSS           JavaScript            JSON
                  <h1>                 var x;           {a: b }
   Javascript Library to simplify dynamic UIs
    with automatic refresh.

   Core Concepts
     Declarative Bindings
     Dependency Tracking
     Templates
   Extensible
   If using ASP.NET MVC
     NuGet Package Manager


   Download
     knockoutjs
     jQuery
   Observable
   Computed Observable
   Observable Arrays
   Declarative bindings
   Template Support
   Create the Model
     Retrieve Data: usually via Ajax or other form data
     retrieval (API, LocalStorage).
   Create the ViewModel
     Encapsulate UI behavior and data from model.
   Create the View (HTML Markup)
     <label data-bind=“text: name” />
   Bind the ViewModel to the view
     applyBindings(viewModel)
var viewModel = {
        firstName: ko.observable("John"),
        lastName: ko.observable("Doe")
};
ko.applyBindings(viewModel);




First Name: <input type="text“ data-bind="value: firstName"/>
Last Name: <input type="text" data-bind=“value: lastName" />

<span data-bind="text : firstName"></span>
<input type="text" data-bind="value : lastName" />
var vm = {
   quantity: ko.observable(10),
   price: ko.observable(100),
   taxRate: ko.observable(8.75)
};

viewModel = new vm();
viewModel.totalCost = ko.computed(function () {
  return (parseInt("0" + this.quantity(), 10) * this.price()) * this.taxRate();
}, viewModel);

ko.applyBindings(viewModel);
var viewModel = {
    States: ko.observableArray([
    { State: "New York", Cities: ['New York City', 'East Hampton', 'Yonkers'] },
    { State: "New Jersey", Cities: ['Jersey City', 'Hoboken', 'Maplewood'] },
    { State: "Connecticut", Cities: ['Stamford', 'Greenwich'] },
    { State: "Pennsylvania", Cities: ['Philadelphia'] },
]),
    selectedState: ko.observable(),
    selectedCity: ko.observable()
};

viewModel.selectionMade = ko.computed(function () {
    return (this.selectedState() && this.selectedCity());
}, viewModel);
ko.applyBindings(viewModel);
Type      Description
visible   Used to hide or show DOM elements

text      Display text value in a DOM element

html      Display html in a DOM element

css       Add or remove CSS classes from DOM elements

style     Apply specific style to a DOM Element

attr      Set the value of any attribute on a DOM element
binding   Description
foreach   Used for rendering lists based on array bindings.

If        Conditional inclusion of markup and any related binding based on
          truthy condition
Ifnot     Conditional inclusion of markup and any related binding based on a
          falsey condition
with      Creates a new binding context changing what descendent element
          bind to.
binding   Description
click     Add an event handler so a function is invoked when the associated
          DOM element is clicked.
event     Add an event handler than can be bound to any event, such as
          keypress, mouseover or mouseout.
submit    Event handler used when submitting forms.

enable    Used to enable DOM elements only when the parameter value is
          true. Typically used with form elements like input, select, and
          textarea.
disable   Opposite of enable. Used in the same way.
binding           Description
value             Associates a DOM’s element value with a propery on the
                  viewmodel.
hasfocus          Two way binding for setting focus on an element and chekcing
                  whether an element has focus.
checked           This binding is used for checkable controls. Radio button or
                  checkbox.
options           Used to bind the elements of a drop-down list or multi-select list.

selectedOptions Bind to elements that are currently selected. Used with select and
                options bindings.
uniqueName        Gives an element a unique name if it does not already have a name
                  attribute.
// Subscribe
myViewModel.totalCost.subscribe(function(newValue) {
    alert(“Let’s check if we are above our budget" + newValue);
});


// Dispose of subscription
var subscriptionCost =
myViewModel.totalCost.subscribe(function(newValue) {

/* do some work   */

});

// ...then later...
subscriptionCost.dispose();
   Custom Bindings
   Plugins

   TodoMVC
     http://addyosmani.github.com/todomvc/
   Knockbackjs
     http://kmalakoff.github.com/knockback/
   KnockoutMVC
     http://knockoutmvc.com/
   Named Templates
   Anonymous Templates
   Inline
   External
   Register a binding by adding it as a
    subproperty of ko.bindingHandlers.

   Need to supply two functions:
     init
     update


   And then use it with DOM element bindings.
    <div data-bind=“customBindingName: someValue"> </div>
ko.bindingHandlers.customBindingName = {
  init: function (element, valueAccessor, allBindingsAccessor, viewModel) {

          // This will be called when the binding is first applied to an element
          // Set up any initial state, event handlers, etc. here
     },

     update: function (element, valueAccessor, allBindingsAccessor, VM) {
        // This will be called once when the binding is first
        // applied to an element, and again whenever the associated
        // observable changes value.
        // Update the DOM element based on the supplied values here.
       }

};
   Main Site (Steve Sanderson - Author)
     http://knockoutjs.com
   Ryan Niemeyer - Contributor
     http://www.knockmeout.com
   Contact:
     http://blog.boulosdib.com
     @boulosdib

Más contenido relacionado

La actualidad más candente

MVC on the server and on the client
MVC on the server and on the clientMVC on the server and on the client
MVC on the server and on the clientSebastiano Armeli
 
AngularJS for designers and developers
AngularJS for designers and developersAngularJS for designers and developers
AngularJS for designers and developersKai Koenig
 
Custom AngularJS Directives
Custom AngularJS DirectivesCustom AngularJS Directives
Custom AngularJS Directivesyprodev
 
MVVM Light Toolkit Works Great, Less Complicated
MVVM Light ToolkitWorks Great, Less ComplicatedMVVM Light ToolkitWorks Great, Less Complicated
MVVM Light Toolkit Works Great, Less Complicatedmdc11
 
Building Custom AngularJS Directives - A Step-by-Step Guide - Dan Wahlin | Fa...
Building Custom AngularJS Directives - A Step-by-Step Guide - Dan Wahlin | Fa...Building Custom AngularJS Directives - A Step-by-Step Guide - Dan Wahlin | Fa...
Building Custom AngularJS Directives - A Step-by-Step Guide - Dan Wahlin | Fa...FalafelSoftware
 
SE2016 Android Mikle Anokhin "Speed up application development with data bind...
SE2016 Android Mikle Anokhin "Speed up application development with data bind...SE2016 Android Mikle Anokhin "Speed up application development with data bind...
SE2016 Android Mikle Anokhin "Speed up application development with data bind...Inhacking
 
Angular custom directives
Angular custom directivesAngular custom directives
Angular custom directivesAlexe Bogdan
 
Workshop 2: JavaScript Design Patterns
Workshop 2: JavaScript Design PatternsWorkshop 2: JavaScript Design Patterns
Workshop 2: JavaScript Design PatternsVisual Engineering
 
Planbox Backbone MVC
Planbox Backbone MVCPlanbox Backbone MVC
Planbox Backbone MVCAcquisio
 
Integration of Backbone.js with Spring 3.1
Integration of Backbone.js with Spring 3.1Integration of Backbone.js with Spring 3.1
Integration of Backbone.js with Spring 3.1Michał Orman
 

La actualidad más candente (20)

Data binding w Androidzie
Data binding w AndroidzieData binding w Androidzie
Data binding w Androidzie
 
MVC on the server and on the client
MVC on the server and on the clientMVC on the server and on the client
MVC on the server and on the client
 
AngularJS Basic Training
AngularJS Basic TrainingAngularJS Basic Training
AngularJS Basic Training
 
AngularJS for designers and developers
AngularJS for designers and developersAngularJS for designers and developers
AngularJS for designers and developers
 
Backbone.js
Backbone.jsBackbone.js
Backbone.js
 
From mvc to viper
From mvc to viperFrom mvc to viper
From mvc to viper
 
Custom AngularJS Directives
Custom AngularJS DirectivesCustom AngularJS Directives
Custom AngularJS Directives
 
MVVM Light Toolkit Works Great, Less Complicated
MVVM Light ToolkitWorks Great, Less ComplicatedMVVM Light ToolkitWorks Great, Less Complicated
MVVM Light Toolkit Works Great, Less Complicated
 
Backbone js
Backbone jsBackbone js
Backbone js
 
Dmytro Zaitsev Viper: make your mvp cleaner
Dmytro Zaitsev Viper: make your mvp cleanerDmytro Zaitsev Viper: make your mvp cleaner
Dmytro Zaitsev Viper: make your mvp cleaner
 
The AngularJS way
The AngularJS wayThe AngularJS way
The AngularJS way
 
Building Custom AngularJS Directives - A Step-by-Step Guide - Dan Wahlin | Fa...
Building Custom AngularJS Directives - A Step-by-Step Guide - Dan Wahlin | Fa...Building Custom AngularJS Directives - A Step-by-Step Guide - Dan Wahlin | Fa...
Building Custom AngularJS Directives - A Step-by-Step Guide - Dan Wahlin | Fa...
 
Angular Js Basics
Angular Js BasicsAngular Js Basics
Angular Js Basics
 
SE2016 Android Mikle Anokhin "Speed up application development with data bind...
SE2016 Android Mikle Anokhin "Speed up application development with data bind...SE2016 Android Mikle Anokhin "Speed up application development with data bind...
SE2016 Android Mikle Anokhin "Speed up application development with data bind...
 
Angular custom directives
Angular custom directivesAngular custom directives
Angular custom directives
 
Workshop 2: JavaScript Design Patterns
Workshop 2: JavaScript Design PatternsWorkshop 2: JavaScript Design Patterns
Workshop 2: JavaScript Design Patterns
 
Planbox Backbone MVC
Planbox Backbone MVCPlanbox Backbone MVC
Planbox Backbone MVC
 
WPF Fundamentals
WPF FundamentalsWPF Fundamentals
WPF Fundamentals
 
Knockout js
Knockout jsKnockout js
Knockout js
 
Integration of Backbone.js with Spring 3.1
Integration of Backbone.js with Spring 3.1Integration of Backbone.js with Spring 3.1
Integration of Backbone.js with Spring 3.1
 

Destacado

CETPA Introduction
CETPA IntroductionCETPA Introduction
CETPA IntroductionVikash Kumar
 
Ape n ükotnes sp-ōle
Ape  n ükotnes sp-ōleApe  n ükotnes sp-ōle
Ape n ükotnes sp-ōleegilsdo
 
Union of Agricultural Work Committees (UAWC) presentation
Union of Agricultural Work Committees (UAWC) presentationUnion of Agricultural Work Committees (UAWC) presentation
Union of Agricultural Work Committees (UAWC) presentationAsian People's Fund
 
Cell Tracking Software: What The Offer Is
Cell Tracking Software: What The Offer IsCell Tracking Software: What The Offer Is
Cell Tracking Software: What The Offer Ishbwmike
 
Lake to Lake 2011 Jay Karen handouts
Lake to Lake 2011 Jay Karen handoutsLake to Lake 2011 Jay Karen handouts
Lake to Lake 2011 Jay Karen handoutspaiiceo
 
Seattle Dev Garage
Seattle Dev GarageSeattle Dev Garage
Seattle Dev GarageJoshua Birk
 
2013 awards master (website)
2013 awards master (website)2013 awards master (website)
2013 awards master (website)TLMI
 
Analysis of music video's
Analysis of music video'sAnalysis of music video's
Analysis of music video'sBecca James
 
Draft 2 planning
Draft 2 planningDraft 2 planning
Draft 2 planningdebbie14
 
Reflexio innovacio--1-2012
Reflexio  innovacio--1-2012Reflexio  innovacio--1-2012
Reflexio innovacio--1-2012ferranmiguelpaco
 
Islam sebagai sebuah sistem agama
Islam sebagai sebuah sistem agamaIslam sebagai sebuah sistem agama
Islam sebagai sebuah sistem agamaRizali Avenged
 
Corporate Presentation - BMO 2015 Global Metals & Mining Conference
Corporate Presentation - BMO 2015 Global Metals & Mining ConferenceCorporate Presentation - BMO 2015 Global Metals & Mining Conference
Corporate Presentation - BMO 2015 Global Metals & Mining Conferenceprimero_mining
 
Assignment 10 group assignment final draft
Assignment 10 group assignment final draftAssignment 10 group assignment final draft
Assignment 10 group assignment final draftdebbie14
 
New members 11.03.15
New members 11.03.15New members 11.03.15
New members 11.03.15TLMI
 
Q4 2013 presentation final
Q4 2013 presentation finalQ4 2013 presentation final
Q4 2013 presentation finalprimero_mining
 
Random 091108040922-phpapp02
Random 091108040922-phpapp02Random 091108040922-phpapp02
Random 091108040922-phpapp02Denka Vladimirova
 
Peran k3 dalam eksplorasi tambang bawah laut 2
Peran k3 dalam eksplorasi tambang bawah laut 2Peran k3 dalam eksplorasi tambang bawah laut 2
Peran k3 dalam eksplorasi tambang bawah laut 2Sylvester Saragih
 
Use grammar with pictures feb 8 2013 (1)
Use grammar with pictures  feb 8 2013 (1)Use grammar with pictures  feb 8 2013 (1)
Use grammar with pictures feb 8 2013 (1)Telly J Hajny
 

Destacado (19)

CETPA Introduction
CETPA IntroductionCETPA Introduction
CETPA Introduction
 
Ape n ükotnes sp-ōle
Ape  n ükotnes sp-ōleApe  n ükotnes sp-ōle
Ape n ükotnes sp-ōle
 
Union of Agricultural Work Committees (UAWC) presentation
Union of Agricultural Work Committees (UAWC) presentationUnion of Agricultural Work Committees (UAWC) presentation
Union of Agricultural Work Committees (UAWC) presentation
 
Cell Tracking Software: What The Offer Is
Cell Tracking Software: What The Offer IsCell Tracking Software: What The Offer Is
Cell Tracking Software: What The Offer Is
 
Lake to Lake 2011 Jay Karen handouts
Lake to Lake 2011 Jay Karen handoutsLake to Lake 2011 Jay Karen handouts
Lake to Lake 2011 Jay Karen handouts
 
Seattle Dev Garage
Seattle Dev GarageSeattle Dev Garage
Seattle Dev Garage
 
2013 awards master (website)
2013 awards master (website)2013 awards master (website)
2013 awards master (website)
 
Analysis of music video's
Analysis of music video'sAnalysis of music video's
Analysis of music video's
 
Draft 2 planning
Draft 2 planningDraft 2 planning
Draft 2 planning
 
Reflexio innovacio--1-2012
Reflexio  innovacio--1-2012Reflexio  innovacio--1-2012
Reflexio innovacio--1-2012
 
Islam sebagai sebuah sistem agama
Islam sebagai sebuah sistem agamaIslam sebagai sebuah sistem agama
Islam sebagai sebuah sistem agama
 
Corporate Presentation - BMO 2015 Global Metals & Mining Conference
Corporate Presentation - BMO 2015 Global Metals & Mining ConferenceCorporate Presentation - BMO 2015 Global Metals & Mining Conference
Corporate Presentation - BMO 2015 Global Metals & Mining Conference
 
Tugas geoteknik tambang
Tugas geoteknik tambangTugas geoteknik tambang
Tugas geoteknik tambang
 
Assignment 10 group assignment final draft
Assignment 10 group assignment final draftAssignment 10 group assignment final draft
Assignment 10 group assignment final draft
 
New members 11.03.15
New members 11.03.15New members 11.03.15
New members 11.03.15
 
Q4 2013 presentation final
Q4 2013 presentation finalQ4 2013 presentation final
Q4 2013 presentation final
 
Random 091108040922-phpapp02
Random 091108040922-phpapp02Random 091108040922-phpapp02
Random 091108040922-phpapp02
 
Peran k3 dalam eksplorasi tambang bawah laut 2
Peran k3 dalam eksplorasi tambang bawah laut 2Peran k3 dalam eksplorasi tambang bawah laut 2
Peran k3 dalam eksplorasi tambang bawah laut 2
 
Use grammar with pictures feb 8 2013 (1)
Use grammar with pictures  feb 8 2013 (1)Use grammar with pictures  feb 8 2013 (1)
Use grammar with pictures feb 8 2013 (1)
 

Similar a Knockoutjs databinding

MVVM & Data Binding Library
MVVM & Data Binding Library MVVM & Data Binding Library
MVVM & Data Binding Library 10Clouds
 
AngularJs Workshop SDP December 28th 2014
AngularJs Workshop SDP December 28th 2014AngularJs Workshop SDP December 28th 2014
AngularJs Workshop SDP December 28th 2014Ran Wahle
 
angularJs Workshop
angularJs WorkshopangularJs Workshop
angularJs WorkshopRan Wahle
 
The Magic of WPF & MVVM
The Magic of WPF & MVVMThe Magic of WPF & MVVM
The Magic of WPF & MVVMAbhishek Sur
 
Introduction to XAML and its features
Introduction to XAML and its featuresIntroduction to XAML and its features
Introduction to XAML and its featuresAbhishek Sur
 
Angular - Chapter 4 - Data and Event Handling
 Angular - Chapter 4 - Data and Event Handling Angular - Chapter 4 - Data and Event Handling
Angular - Chapter 4 - Data and Event HandlingWebStackAcademy
 
Will your code blend? : Toronto Code Camp 2010 : Barry Gervin
Will your code blend? : Toronto Code Camp 2010 : Barry GervinWill your code blend? : Toronto Code Camp 2010 : Barry Gervin
Will your code blend? : Toronto Code Camp 2010 : Barry GervinBarry Gervin
 
Backbonejs
BackbonejsBackbonejs
BackbonejsSam Lee
 
Creating lightweight JS Apps w/ Web Components and lit-html
Creating lightweight JS Apps w/ Web Components and lit-htmlCreating lightweight JS Apps w/ Web Components and lit-html
Creating lightweight JS Apps w/ Web Components and lit-htmlIlia Idakiev
 
Web Components Everywhere
Web Components EverywhereWeb Components Everywhere
Web Components EverywhereIlia Idakiev
 
MV* presentation frameworks in Javascript: en garde, pret, allez!
MV* presentation frameworks in Javascript: en garde, pret, allez!MV* presentation frameworks in Javascript: en garde, pret, allez!
MV* presentation frameworks in Javascript: en garde, pret, allez!Roberto Messora
 
Rp 6 session 2 naresh bhatia
Rp 6  session 2 naresh bhatiaRp 6  session 2 naresh bhatia
Rp 6 session 2 naresh bhatiasapientindia
 
Google Polymer Introduction
Google Polymer IntroductionGoogle Polymer Introduction
Google Polymer IntroductionDavid Price
 
Diving in the Flex Data Binding Waters
Diving in the Flex Data Binding WatersDiving in the Flex Data Binding Waters
Diving in the Flex Data Binding Watersmichael.labriola
 

Similar a Knockoutjs databinding (20)

Fundaments of Knockout js
Fundaments of Knockout jsFundaments of Knockout js
Fundaments of Knockout js
 
MVVM & Data Binding Library
MVVM & Data Binding Library MVVM & Data Binding Library
MVVM & Data Binding Library
 
AngularJs Workshop SDP December 28th 2014
AngularJs Workshop SDP December 28th 2014AngularJs Workshop SDP December 28th 2014
AngularJs Workshop SDP December 28th 2014
 
Knockoutjs
KnockoutjsKnockoutjs
Knockoutjs
 
angularJs Workshop
angularJs WorkshopangularJs Workshop
angularJs Workshop
 
The Magic of WPF & MVVM
The Magic of WPF & MVVMThe Magic of WPF & MVVM
The Magic of WPF & MVVM
 
Knockout js session
Knockout js sessionKnockout js session
Knockout js session
 
Introduction to XAML and its features
Introduction to XAML and its featuresIntroduction to XAML and its features
Introduction to XAML and its features
 
Angular - Chapter 4 - Data and Event Handling
 Angular - Chapter 4 - Data and Event Handling Angular - Chapter 4 - Data and Event Handling
Angular - Chapter 4 - Data and Event Handling
 
Will your code blend? : Toronto Code Camp 2010 : Barry Gervin
Will your code blend? : Toronto Code Camp 2010 : Barry GervinWill your code blend? : Toronto Code Camp 2010 : Barry Gervin
Will your code blend? : Toronto Code Camp 2010 : Barry Gervin
 
Backbonejs
BackbonejsBackbonejs
Backbonejs
 
Knockout js
Knockout jsKnockout js
Knockout js
 
Creating lightweight JS Apps w/ Web Components and lit-html
Creating lightweight JS Apps w/ Web Components and lit-htmlCreating lightweight JS Apps w/ Web Components and lit-html
Creating lightweight JS Apps w/ Web Components and lit-html
 
Web Components Everywhere
Web Components EverywhereWeb Components Everywhere
Web Components Everywhere
 
MV* presentation frameworks in Javascript: en garde, pret, allez!
MV* presentation frameworks in Javascript: en garde, pret, allez!MV* presentation frameworks in Javascript: en garde, pret, allez!
MV* presentation frameworks in Javascript: en garde, pret, allez!
 
Rp 6 session 2 naresh bhatia
Rp 6  session 2 naresh bhatiaRp 6  session 2 naresh bhatia
Rp 6 session 2 naresh bhatia
 
Google Polymer Introduction
Google Polymer IntroductionGoogle Polymer Introduction
Google Polymer Introduction
 
Diving in the Flex Data Binding Waters
Diving in the Flex Data Binding WatersDiving in the Flex Data Binding Waters
Diving in the Flex Data Binding Waters
 
KnockoutJS and MVVM
KnockoutJS and MVVMKnockoutJS and MVVM
KnockoutJS and MVVM
 
Valentine with AngularJS
Valentine with AngularJSValentine with AngularJS
Valentine with AngularJS
 

Último

The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningLars Bell
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxLoriGlavin3
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxLoriGlavin3
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESmohitsingh558521
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 

Último (20)

The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine Tuning
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptx
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 

Knockoutjs databinding

  • 8. Independent Consultant – Napeague Inc.  First Commercial Personal Computer 1980 – TRS-80 Model III  First Z80 based product (Protocol Adaptor For Citibank– 1984)  First Commercial MS-DOS product (Telex/IBM PC, 50 Baud – 1985)  Started Windows Development using 16-bit Win 3.x  Used: 8080/Z80, 68xxx, PDP/RSX,VAX-VMS and x86 (C, C++, C#)  User Group/Meetup Co-Organizer:  New York Pluralsight Study Group, XAML NYC  Other interests:  Windsurfing, Guitar Playing
  • 9. Introduction to Knockout & MVVM  Built-in bindings  Custom bindings  Templates
  • 10. Simple development pattern.  MVVM, aka MVVC, sometimes MVC or MVP  Separation of concerns (Pattern)  Separates Model and UI  Separates Behavior and Structure  Popular with WPF & Silverlight developers.  Data Binding makes it easy to implement MVVM.
  • 11. The 100K foot level view, Web Application  Models, Controllers and Views Web Application DB Views Controllers Models Partial Views Routes Services Partial Views Routes Services Partial Views Routes Services Code & Markup Code Code
  • 12. The browser level view  HTML/CSS – JavaScript - JSON Browser View ViewModel Model HTML & CSS JavaScript JSON <h1> var x; {a: b }
  • 13. Javascript Library to simplify dynamic UIs with automatic refresh.  Core Concepts  Declarative Bindings  Dependency Tracking  Templates  Extensible
  • 14. If using ASP.NET MVC  NuGet Package Manager  Download  knockoutjs  jQuery
  • 15. Observable  Computed Observable  Observable Arrays  Declarative bindings  Template Support
  • 16. Create the Model  Retrieve Data: usually via Ajax or other form data retrieval (API, LocalStorage).  Create the ViewModel  Encapsulate UI behavior and data from model.  Create the View (HTML Markup)  <label data-bind=“text: name” />  Bind the ViewModel to the view  applyBindings(viewModel)
  • 17. var viewModel = { firstName: ko.observable("John"), lastName: ko.observable("Doe") }; ko.applyBindings(viewModel); First Name: <input type="text“ data-bind="value: firstName"/> Last Name: <input type="text" data-bind=“value: lastName" /> <span data-bind="text : firstName"></span> <input type="text" data-bind="value : lastName" />
  • 18. var vm = { quantity: ko.observable(10), price: ko.observable(100), taxRate: ko.observable(8.75) }; viewModel = new vm(); viewModel.totalCost = ko.computed(function () { return (parseInt("0" + this.quantity(), 10) * this.price()) * this.taxRate(); }, viewModel); ko.applyBindings(viewModel);
  • 19. var viewModel = { States: ko.observableArray([ { State: "New York", Cities: ['New York City', 'East Hampton', 'Yonkers'] }, { State: "New Jersey", Cities: ['Jersey City', 'Hoboken', 'Maplewood'] }, { State: "Connecticut", Cities: ['Stamford', 'Greenwich'] }, { State: "Pennsylvania", Cities: ['Philadelphia'] }, ]), selectedState: ko.observable(), selectedCity: ko.observable() }; viewModel.selectionMade = ko.computed(function () { return (this.selectedState() && this.selectedCity()); }, viewModel); ko.applyBindings(viewModel);
  • 20. Type Description visible Used to hide or show DOM elements text Display text value in a DOM element html Display html in a DOM element css Add or remove CSS classes from DOM elements style Apply specific style to a DOM Element attr Set the value of any attribute on a DOM element
  • 21. binding Description foreach Used for rendering lists based on array bindings. If Conditional inclusion of markup and any related binding based on truthy condition Ifnot Conditional inclusion of markup and any related binding based on a falsey condition with Creates a new binding context changing what descendent element bind to.
  • 22. binding Description click Add an event handler so a function is invoked when the associated DOM element is clicked. event Add an event handler than can be bound to any event, such as keypress, mouseover or mouseout. submit Event handler used when submitting forms. enable Used to enable DOM elements only when the parameter value is true. Typically used with form elements like input, select, and textarea. disable Opposite of enable. Used in the same way.
  • 23. binding Description value Associates a DOM’s element value with a propery on the viewmodel. hasfocus Two way binding for setting focus on an element and chekcing whether an element has focus. checked This binding is used for checkable controls. Radio button or checkbox. options Used to bind the elements of a drop-down list or multi-select list. selectedOptions Bind to elements that are currently selected. Used with select and options bindings. uniqueName Gives an element a unique name if it does not already have a name attribute.
  • 24. // Subscribe myViewModel.totalCost.subscribe(function(newValue) { alert(“Let’s check if we are above our budget" + newValue); }); // Dispose of subscription var subscriptionCost = myViewModel.totalCost.subscribe(function(newValue) { /* do some work */ }); // ...then later... subscriptionCost.dispose();
  • 25. Custom Bindings  Plugins  TodoMVC  http://addyosmani.github.com/todomvc/  Knockbackjs  http://kmalakoff.github.com/knockback/  KnockoutMVC  http://knockoutmvc.com/
  • 26. Named Templates  Anonymous Templates  Inline  External
  • 27. Register a binding by adding it as a subproperty of ko.bindingHandlers.  Need to supply two functions:  init  update  And then use it with DOM element bindings. <div data-bind=“customBindingName: someValue"> </div>
  • 28. ko.bindingHandlers.customBindingName = { init: function (element, valueAccessor, allBindingsAccessor, viewModel) { // This will be called when the binding is first applied to an element // Set up any initial state, event handlers, etc. here }, update: function (element, valueAccessor, allBindingsAccessor, VM) { // This will be called once when the binding is first // applied to an element, and again whenever the associated // observable changes value. // Update the DOM element based on the supplied values here. } };
  • 29. Main Site (Steve Sanderson - Author)  http://knockoutjs.com  Ryan Niemeyer - Contributor  http://www.knockmeout.com
  • 30. Contact:  http://blog.boulosdib.com  @boulosdib