Эта статья включает список общих ссылок , но в ней отсутствуют соответствующие встроенные цитаты . ( Июнь 2021 г. ) |
Оригинальный автор(ы) | Стив Сандерсон |
---|---|
Первоначальный выпуск | 5 июля 2010 г. ( 2010-07-05 ) |
Стабильный релиз | 3.5.1 / 5 ноября 2019 г. ( 2019-11-05 ) |
Репозиторий | Репозиторий Нокаутов |
Написано в | JavaScript |
Размер | 59 КБ минифицированный / 283 КБ (режим разработки) |
Тип | Библиотека JavaScript |
Лицензия | Массачусетский технологический институт |
Веб-сайт | knockoutjs.com |
Knockout — это автономная реализация JavaScript- шаблона Model–View–ViewModel . Поэтому основные принципы таковы:
Последний использует собственные функции управления событиями языка JavaScript.
Эти функции оптимизируют и упрощают спецификацию сложных взаимосвязей между компонентами представления, что, в свою очередь, делает отображение более отзывчивым и расширяет возможности пользователя.
Knockout был разработан и поддерживается как проект с открытым исходным кодом Стивом Сандерсоном.
Knockout включает в себя следующие функции:
1. В этом примере два текстовых поля привязаны к наблюдаемым переменным в модели данных. Отображение "полного имени" привязано к зависимому наблюдаемому, значение которого вычисляется в терминах наблюдаемых. При редактировании любого из текстовых полей отображение "полного имени" автоматически обновляется без явной обработки событий.
function ViewModel ( ) { this.firstName = ko.observable ( " " ) ; this.lastName = ko.observable ( " " ) ; это.полноеИмя = ко.вычисленное ( функция ( ) { вернуть это.первоеИмя ( ) + " " + это.последнееИмя ( ) ; } , это ) ; } ко . applyBindings ( новая ViewModel ());
2. Создание пользовательских обработчиков привязки в KnockoutJS
Используйте объект ko.bindingHandlers, чтобы указать имя пользовательской привязки и создать функцию init или update при создании пользовательского обработчика привязки. Функция init вызывается, когда привязка применена к элементу, что идеально подходит для одноразовой инициализации. Всякий раз, когда изменяется привязанный наблюдаемый объект, вызывается функция update, которая позволяет вам реагировать на изменение данных.
Вот простой пример пользовательского обработчика привязки, который применяет элемент выбора даты jQuery UI к элементу ввода:
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 ) ; } } ;