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.

  • 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.

<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());