Knockout.js ir JavaScript bibliotēka, kas realizē Model-View-ViewModel arhitektūru.

Knockout izstrādāja Microsoft darbinieks Stīvs Sandersons (Steve Sanderson). Tas tika izstrādāts un tiek uzturēts kā atvērtā pirmkoda projekts.

Īpatnības labot šo sadaļu

  • Deklaratīvā sasaiste
  • Mainoties datu modeļa stāvoklim notiek automātiska saskarnes atjaunošana
  • Atkarību izsekošana
  • Šablonu izmantošana (ir iespēja izmantot gan iebūvēto šablonu mehānismu, gan citus šablonu mehānismus, piemēram, tādu kā jquery.tmpl)

Vienkāršs piemērs labot šo sadaļu

Šajā piemērā divi ievades lauki ir piesaistīti datu modeļa novērojamajiem mainīgajiem (kodā katrs šāds mainīgais tiek definēts kā 'observable'). Savukārt pilnais vārds ("full name") ir piesaistīts atkarīgakam mainīgajam (angļu valodā — dependent observable, bet kodā — computed observable) un tā vērtība tiek izrēķināta. Tiklīdz ievades lauki tiek rediģēti, pilnais vārds automātiski mainās un tam nav nepieciešams pieasitīt paildus notikumu apstrādi.

Skats (HTML) labot šo sadaļu

<p>First name: <input data-bind="value: firstName" /></p>
<p>Last name: <input data-bind="value: lastName" /></p>

Skata Modelis (JavaScript) labot šo sadaļu

function ViewModel() {
    this.firstName = ko.observable("Joe");
    this.lastName = ko.observable("Bloggs");

    this.fullName = ko.computed(function() {
        return this.firstName() + " " + this.lastName();
    }, this);
}

ko.applyBindings(new ViewModel());