Что такое nockout.js?
Нокаут - это отличная библиотека JavaScript, которая помогает вам создать текст, богатый пользовательским интерфейсом с хорошим отображением и редактированием, используя только чистую и аккуратную базовую модель данных. В любое время ваш локальный контент пользовательского интерфейса должен автоматически обновляться (например, в зависимости от изменений в поведении пользователей или изменениях в источниках внешних данных), KO может быть легко реализован для вас и очень легко поддерживать.
1. Диаграмма отношений основной категории
II Классовые обязанности
2.1. Наблюдаемый (нормальный класс объекта мониторинга)
Внутренняя реализация наблюдаемого (другая функция):
1. Сначала объявите FN, названный наблюдаемым (это можно сказать, что это класс)
2. Добавьте уникальное свойство «НОВАЯ».
3. Если поддерживается атрибут __proto__, используйте HasownProperty, чтобы определить, существует ли атрибут для наследования, и судить код __proto__ (в классе UTILS)
var cansetprototype = ({__proto__: []} exanceof array);
4. Метод инициации атрибута FN of Ko.subscribebable инициализирует наблюдаемый (в основном добавляет подписку и публикует связанные атрибуты)
5. Наблюдаемый, затем наследует наблюдаемые атрибуты и методы, связанные с наблюдаемыми FFN (ObservableFN содержит стратегии выполнения до изменения значения и после изменения значения)
// Определите прототип для usemberablesvar vasemblefn = {'evenalitycomparer': valuesareprimitiveandequal, peek: function () {return this [vaselelatestvalue]; }, valueHasmutated: function () {this ['notifySubScribers'] (это [vasebleLateStValue]); }, valueWillMutate: function () {this ['notifySubScribers'] (это [vasebleLateStValue], 'beforeChange'); }};6. Верните реализацию наблюдаемого метода (если установлены входящие параметры, и если нет параметра, он получает)
7. Этот класс также предоставляет hasprototype (для определения того, имеет ли указанный экземпляр это свойство), IsobServable (чтобы определить, является ли указанный экземпляр объектом мониторинга), IswritableObservable (чтобы определить, является ли это объект для мониторинга записи).
2.2. ObservableArray (класс объекта мониторинга массива)
1. Сначала выполнить метод KO.ObServable, чтобы сделать его объект контролируемым классом (названный результат);
2. Затем разверните объект FN в ko.observablearray (Ko.observablearray FN переписывает методы работы, связанные с массивами, такие как удаление, толчок и т. Д.)
3. Распространите метод через Extends (TrackarrayChanages, для получения подробной информации см. 2,5) см. 2,5) см. 2,5.
4. вернуть расширенный объект результата.
ko.observablearray = function (initialValues) {initialValues = initialValues || []; if (typeOf initialValues! = 'Object' ||! ('Длина' в начальных заведениях)) бросить новую ошибку («аргумент, переданный при инициализации наблюдаемого массива, должен быть массивом, или нулевой, или не определенной.»); var result = ko.obServable (initialValues); ko.Utils.setprototypopepRexEdend (result, ko.obo.obo.obo.obo.obo.obo.o.o.obo.o.obro result.extend ({'trackarraychanges': true});};2.3. Подписаться (подписки на объект)
1. Функциональные модули для подписки и публикации являются важными базовыми классами для наблюдаемого и наблюдаемого.
2. Здесь есть подписный метод, который используется для подписки на изменения объектов мониторинга. Для разработки вы можете использовать эту точку наследования для входа.
Подписаться: function (обратный вызов, CallbackTarget, Event) {var self = this; event = event || defaultevent; var boundcallback = callbacktarget? callback.bind (callbacktarget): callback; var ntoppring = new ko.subscription (self, boundcallback, function () {ko.utils.arrayremoveitem (self._subscriptions [event], подпись); if (self.aftersUbscriptionRemove) selfts.aftersUbscriptionRemove (event); (self.beforesubscriptionAdd) self.beForeSubscriptionAdd (event); if (! self._subscriptions [event]) self._subscriptions [event] = []; self._subscriptions [event] .push (подписка); return;};3. Включите: этот метод используется для добавления класса расширения, добавленного методом Extends (например, класс расширения ObserveArray.ChangETracking)
4. Метод расширения расширения будет выполнен сразу после регистрации объекта мониторинга. Перепущенные параметры являются целью (текущий объект) и параметры (параметры передаются при вызове расширения)
5. ВЫСТУПАЕТСЯ - это метод для установки расширения, и он немедленно выполнит код в расширении.
2.4. расширяется (расширенный класс объекта мониторинга)
1. KOS Extension Collection
2. Предоставьте метод ApplyExtenders для установки расширения
function ApplyExtenders (requestEdextenders) {var target = this; if (requestEdextenders) {ko.utils.objectforeach (requesteDextenders, function (ключ, значение) {var extenderhandler = ko.extenders [key]; if (typeof extenderhandler == 'function') {target = extenderHandler (value);2.5. Наблюдаемый.
1. Это расширение в основном реализует мониторинг изменений массива, затем вычисляет различия в массиве и запускает связанные с ним события подписки
2. Cachediffforknownoperation: операции кэша на массивах для сравнения различий
3. beforesubscriptionAdd и AftersUbScriptionRemove Связанные подписки (еще не до конца понятно).
Выше приведено углубленный анализ анализа нокаутного исходного кода, введенного редактором для вас. Я надеюсь, что это будет полезно для вас. Если у вас есть какие -либо вопросы, пожалуйста, оставьте мне сообщение, и редактор ответит вам вовремя. Большое спасибо за вашу поддержку сайту wulin.com!