Knockout
Original authorSteve Sanderson
Initial releaseJuly 5, 2010 (2010-07-05)
Stable release
3.5.1 / November 5, 2019; 6 years ago (2019-11-05)
Written inJavaScript
Size59 KB minified / 283 KB (development mode)
TypeJavaScript library
LicenseMIT
Websiteknockoutjs.com
RepositoryKnockout Repository

Knockout is a standalone JavaScript implementation of the model–view–viewmodel (MVVM) pattern with templates. The underlying principles are therefore:

  • a clear separation between domain data, view components and data to be displayed
  • the presence of a clearly defined layer of specialized code to manage the relationships between the view components

The latter leverages the native event management features of the JavaScript language.

These features streamline and simplify the specification of complex relationships between view components, which in turn make the display more responsive and the user experience richer.

Knockout was developed and is maintained as an open source project by Steve Sanderson.

Features

edit

Knockout includes the following features:

  • Declarative bindings
  • Automatic UI refresh (when the data model's state changes, the UI updates automatically)
  • Dependency tracking Templating (contains a dedicated template engine, but other templating engines can be used)

Examples

edit

1. In this example, two text boxes are bound to observable variables on a data model. The "full name" display is bound to a dependent observable, whose value is computed in terms of the observables. When either text box is edited, the "full name" display is automatically updated, with no explicit event handling.

ViewModel (JavaScript)

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

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

ko.applyBindings(new ViewModel());

2. Creating Custom Binding Handlers in KnockoutJS

Use the ko.bindingHandlers object to specify your custom binding’s name and create an init or update function when creating a custom binding handler. The init function is called when the binding has been applied to an element, perfect for onetime initialization. Whenever the bound observable changes, an update function is called that allows you to react to changing data.

Here’s a simple example of a custom binding handler that applies a jQuery UI datepicker to an input element:

Custom Binding Handler

edit
ko.bindingHandlers.datepicker = {
    init: function(element, valueAccessor) {
        $(element).datepicker({
            onSelect: function(date) {
                var observable = valueAccessor();
                observable(date);
            }
        });
    },
    update: function(element, valueAccessor) {
        var value = ko.unwrap(valueAccessor());
        $(element).datepicker("setDate", value);
    }
};

References

edit
  • Papa, John (February 2012). "Getting Started with Knockout". MSDN Magazine. Retrieved March 9, 2012.
  • Papa, John (March 2012). "Knockout's Built-in Bindings for HTML and JavaScript". MSDN Magazine. Retrieved March 9, 2012.
edit


📚 Artikel Terkait di Wikipedia

Comparison of JavaScript-based web frameworks

of web frameworks for front-end web development that are reliant on JavaScript code for their behavior. JavaScript-based web application frameworks, such

Knockout (disambiguation)

show The Knockout (Chinese TV series), a 2023 Chinese TV series directed by Xu Jizhou Knockout (web framework), a JavaScript library Image knockout, removing

Index of JavaScript-related articles

JsPHP JsSIP JSX (JavaScript) JWt (Java web toolkit) KaTeX KJS Knockout (web framework) Kopano (software) Leaflet (software) Less (stylesheet language)

List of JavaScript libraries

Backbone.js Echo Ember.js Enyo Express.js Ext JS Google Web Toolkit JsRender/JsViews Knockout Meteor Mojito MooTools Next.js Nuxt.js OpenUI5 by SAP Polymer

Single-page application

which the browser navigated to. Web browser JavaScript frameworks and libraries, such as Angular, Ember.js, ExtJS, Knockout.js, Meteor.js, React, Vue.js

Model–view–viewmodel

involving the .NET platform. ZK, a web application framework written in Java, and the JavaScript library KnockoutJS use model–view–binder. Model Model

JQWidgets

of Maryland. The framework is also used in NSB/AppStudio. jQWidgets has been integrated with a variety of other frameworks and web technologies, such

DaVinci (software)

Open-source libraries, such as KnockOut, JsRender/JsViews, Impress.js, and turn.js, were included in the tool. Other open-source frameworks could also be integrated