SlideShare une entreprise Scribd logo
1  sur  30
Télécharger pour lire hors ligne
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

Contenu connexe

Tendances

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
 

Tendances (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
 

En vedette

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
 

En vedette (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)
 

Similaire à 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
 

Similaire à 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
 

Dernier

Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksSoftradix Technologies
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersThousandEyes
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphNeo4j
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
 

Dernier (20)

Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other Frameworks
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food Manufacturing
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping Elbows
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
 

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