RSS Мои друзья Контакты

Как-то раз работая над очередным мобильным приложением на ionic2, я использовал ion-slides, который как оказалось написан на основе другого open source проекта - Swiper.io. С тех пор я его использую во всех проектах где нужен слайдер и сейчас расскажу почему.

В Magento есть несколько встроенных возможностей по оптимизации клиентской части сайта. В данной статье мы научимся не только объединять все JavaScript файлы в один, а и минифицировать конечный файл!

Вчера, на одном из старых сайтов я увидел номера телефонов в виде рисунков, и подумал - какая глупость! Но потом нашел оправдание человеку :) Скорее всего он не имел достаточно навыков, чтобы сделать это "правильно". Но позже до меня дошло на сколько это на самом деле гениально!

Одним из моих подручных инструментов для реализации single page application-ов стал Knockout. И я хочу поделится некоторыми трюками для написания хорошего кода с использованием этого чудесного фреймворка.

Knockout позволяет расширять свой функционал, а это значит, что конечный пользователь не ограничен использованием только стандартных байндингов, таких как click, value, text, etc. Даже не используя своих сверхспособностей программиста, можно без особых усилий написать байндинг, который реализует стандартное grid поведение (сортировка, удаление, добавление, пейджинг).

Никакое приложение не может быть востребованным и популярным, если оно не отвечает на действия пользователя. KO предоставляет ряд инструментов (байндингов) для обработки разных событий и управления полями формы.

По аналогии большинству языков программирования в Knockout реализованы основные управляющие конструкции: foreach, if, ifnot и with. foreach будет полезен при итерировании по массиву значений, if - для принятия какого-либо решения и with - для создания определенного контекста выполнения. Рассмотрим их более детально.

KO построен по принципам MVVM паттерна, т.е. предоставляет возможность изменять View посредством изменения ViewModel. А делает он это при помощи байндингов. Рассмотрим какие из них отвечают за управление видимостью и содержимым элементов

Теперь уже известно, что нужно использовать метод observable для свойства, чтобы иметь возможность отвечать на его изменения. Если же нужно реагировать на изменения в коллекции (массиве), то используюется observableArray

Что если одно из свойств View модели зависит от значения других? Опираясь на профессиональную лень предположу, что было бы хорошо, если бы оно пересчитывалось автоматически при изменении одного из свойств от которого зависит, без участия посторонних сил. Для этого в KnockOut и реализованы составные свойства
1 2