Новички возможно захотят пропустить этот раздел — записываемые computed переменные являются достаточно продвинутой техникой и не нужны в большинстве ситуаций
Обычно, computed переменные содержат значение, которое вычисляется из других observable переменных и следовательно, является досупным только для чтения. Что может удивить, так это то, что существует возможность сделать эти computed переменные записываемыми. Вам нужно всего лишь предоставить собственную callback-функцию , которая делает что-то разумное с записываемыми значениями.
Вы можете использовать записываемые computed переменные таким же способом, как и обычные observable переменные, со своей собственной логикой, перехватывающей все чтения и записи. Как и observable переменные, вы можете вписывать значения во множество observable или computed свойств на объекте модели, используя цепочки вызовов. Например, myViewModel.fullName(‘Итан Маркотт’).age(50).
Записываемые computed переменные это мощный инструмент с широким спектром применения. (далее…)
Что если есть observable-переменная для firstName (имя), и другая для lastName(фамилия), и вы хотите вывести полное имя? Это именно тот момент, когда на сцене появляются computed observable (вычисляемые observable-переменные). Это функции, которые зависят от одной или более других observable-переменных, и их значение будет автоматически обновляться когда любая из из переменных, от которых зависит computed-переменная изменилась. (далее…)
Если вам нужно отслеживать изменения объекта и отвечать на них, то нужно использовать observable-переменные. Если же нужно отслеживать и отвечать на изменения набора данных, используйте observableArray. Это полезно во множестве случаев, где вы отображаете или редактируете множество элементов и нужны повторяющиеся участки UI, которые бы появлялись или исчезали с добавлением или удалением элементов. (далее…)
Русская документация по замечательной библиотеке для декларативного биндинга — Knockout.js (далее…)
Knockout построен на основе трех основных возможностей:
На этой странице, вы узнаете о первой из трех. Но перед этим, давайте изучим паттерн MVVM и концепцию view model. (далее…)
Knockout (нокаут) это JavaScript библиотека, помогающая создавать богатые, отзывчивые в отображении и редактировании пользовательские интерфейсы на основе чистой модели данных.
Каждый раз, когда у вас есть элементы UI которые динамически обновляются (например, изменения в зависимости от действий пользователя, или при изменении внешних данных),
KO поможет реализовать все это в более простом виде с возможностью последующей доработки.
Управление DOM-элементами это сердце современных интерактивных веб-сайтов. К сожалению, оно так же и значительно медленнее, нежели большинство операций в JavaScript.
Причем эта медлительность усугубляется ещё и тем, что большинство JavaScript-фреймворков делают обновления в DOM намного чаще, чем им на самом деле требуется.
В качестве примера, скажем у нас есть список из десяти элементов. Вы отключаете первый элемент. Большинство JavaScript-фреймворков будут перестраивать весь список. А это в десять раз больше работы, чем требуется! Всего лишь один элемент изменился, но оставшиеся девять будут перестроены в таком же виде, как и были до этого.
Перестроить список — это не большая нагрузка для браузера, но современные веб-сайты могут использовать огромное количество DOM-объектов при манипуляциях. Неэффективное обновление превращается в серьезную проблему.
Для решения этой проблемы, люди из React продвигают и популяризируют нечто, называемое Виртуальный DOM (англ. virtual DOM). (далее…)