Releases: yandex-ui/noscript
Releases · yandex-ui/noscript
v0.4.5
Несовместимые изменения
- [ns.action] Удален обработчик всех ссылок на странице. Теперь модуль управляет только экшенами. #401. Теоретически ничего не должно сломаться, ведь за обработку ссылок отвечают обработчик события
popstate
изns.history
Исправления
- [ns.request] Исправлено получение данных у моделей с собственным запросом #396
- [ns.router] При генерации урла енкодинг происходит только для значений #397
- [ns.router] При генерации и парсинге урлов вида
?id=1&id=2
теперьid
становится массивом #382 - [ns.View] Вид теперь инициализирует модели с собственными параметрами, а не со всеми переданными #389
- [ns.ViewCollection] Исправлена перерисовка вложенных коллекций видов #398
v0.4.4
Исправления
- [ns.Model] Исправлена подписка на событие
ns-model-destroyed
#394 - [ns.View] Игнорированная модель теперь синхронизирует только свою версию #384.
- [ns.View] Вызов метода
ns.Model#touch()
теперь тоже подпадает под подписку видов на модель #387. Без этого можно было получить странную ситуацию, когда вид декларирует игнорирование модели, но сделавtouch
модели, вид перерисовывался. - [ns.ModelCollection][ns.ViewCollection] Множественные исправления. #390, #391, #392
invalidate()
у ViewCollection заставляет перерисовываться только себя, но не своих детей.- Исправлены события
ns-view-*
для элементов коллекции
v0.4.3
Новые возможности
- [ns.Model] Появился статический метод ns.Model.traverse для обхода моделей #369
- [ns.ViewCollection] Коллекция теперь может наследоваться от другой коллекции #375
Исправления
- [ns]
ns.replaceNode
теперь безопасно работает на детаченной ноде #374 - [ns.View] Исправлен баг с дублированием обработчиков событий моделей #377
- [ns.Update] Шаблонизация и обновление DOM теперь происходят синхронно #371
- [ns.Update] Улучшена ловля ошибок #378
- [ns.ViewCollection] Метод
split.intoViews
теперь вызывается в контексте коллекции #372
v0.4.2
v0.4.1
Исправления
- [ns.Model] Событие
ns-model-destroyed
теперь кидает сама модель, а не статический метод. Внешнее поведение не изменилось. #363 - [ns.request] После v0.4.0 не запрашивались do-модели #360
- [ns.ViewCollection] После v0.4.0 не отрисовывались элементы асинхронных viewCollection #362
Несовместимые изменения
- [server ns]
require('noscript')
теперь возвращает функцию, а не объект. Функция возвращает уникальный некешируемый экземплярns
. Без этого использовать ns на сервере было невозможно, т.к. кеш был одинаковым для всех запросов. #361
v0.4.0
Новые возможности
- [ns.Model] Модели теперь можно наследовать по названию #343
- [ns.Model] Теперь модель может запрашиваться из любого места #214. Подробнее в документации
- [ns.ModelCollection][ns.ViewCollection] Коллекции теперь могут содержать разнородные элементы #315
Исправления
- [ns] Исправлен баг в
ns.parseQuery
при разборе значения с=
#357 - [ns.ModelCollection] Коллекцию теперь можно наполнить на событие
ns-model-init
#342 - [ns.ModelCollection] Исправлено удаление нескольких элементов из коллекции #350
- [ns.ModelCollection] #clear теперь кидает событие
ns-model-remove
. #340 - [ns.Update] Прерывание нескольких запущенных обновлений теперь происходит без js-ошибок
- [ns.View] Исправлена ошибка, из-за которой вид не перерисовывался при изменении версии моделей. #356
Несовместимые изменения
- [ns.Model] Метод canRetry переименован в canRequest #336. С помощью него теперь можно создавать настоящие локальные модели
- [ns.ViewCollection] Убрано ограничение на зависимость только от одной ns.ModelCollection. Теперь надо отдельно указывать по какой именно модели создавать элементы коллекции #349. Подробнее в документации
// раньше
ns.ViewCollection.define('vc', {
models: ['collection', 'model'],
split: {
view_id: 'vc-item'
}
});
// теперь
ns.ViewCollection.define('vc', {
models: ['collection', 'model'],
split: {
// надо указывать по какой ns.ModelCollection делается split
byModel: 'collection'
// view_id переименован в intoViews
intoViews: 'vc-item'
}
});
- [ns.ViewCollection] Для отрисовки элементов коллекции через yate теперь надо использовать моду
ns-view-collection
вместоns-view-desc
v0.3.0
Новые возможности
- [ns] Добавился метод ns.reset, позволяющий установить все сущности приложения в начальное состояние.
- [ns] noscript научился работать на сервере. Можно первую страницу сгенерировать в node.js, отправить html с данными в браузер и запустить приложение.
- [yate] Добавлен хелпер
modelError()
для получения ошибок модели #274 - [yate] Добавлена external-функция
ns-generate-url()
- мост доns.router.generateUrl()
- Для Vow.Promise реализована обертка, логирующая все ошибки через
ns.log.exception
#289 - [ns.Events] Из nommon перенесен миксин ns.Events. Теперь вызовы обработчиков обернуты в try-catch, если произошла ошибка в обработчике, то это не ломает всю очередь. #328
- [ns.Model] Добавлен статический метод
ns.Model._clear
для очищения данных всех моделей без удаления декдараций. Метод полезен при тестировании приложений на основеnoscript
. - [ns.ModelCollection] Методы
#bindModel
и#unbindModel
стали публичными и могут использоваться, к примеру, для подписки коллекции на кастомные события вложенных моделей - [ns.Page] Добавлены события
ns-page-after-load
иns-page-error-load
#305 - [ns.Page] Появился метод
ns.page.followRoute
, который вызывается после роутинга, но до запуска обновления. Через него можно реализовывать предзагрузку. - [ns.Update] Добавлен метод
#perf
куда приходят метрики скорости выполненияns.Update
Несовместимые изменения
- [ns] Удалена функция
ns.transaction
, как неиспользуемая #296 - [ns.Model] Метод
#invalidate
больше не удаляет данные модели, а просто меняет ей статус. - [ns.Update] В модуле произошел сильный рефакторинг. Точкой переопределения шаблонизатора теперь является не
#render
, аapplyTemplates
- [ns.View] Из yate-дерева удалено свойство
page
- ссылка на объектns.page.current
. Если оно необходимо, то следует реализовать соответствующие external-функции в проекте. #272 - [ns.View] yate-дерево сильно изменено и упрощено. Если использовались какие-то свойства из него, то надо ознакомиться с новой документацией.
- [ns.View] Обработчики "космических" событий noscript теперь навешиваются на show, если не указан
@init
. Раньше было наоборот. Для сохранения совместимости надо всем событиям без@show
добавить@init
. #316 - [ns.View] Сильно переделан JSON для шаблонизатора. #273
Исправления
- [ns.Model] Гарантированна уникальность моделей при добавлении в коллекцию #266
v0.2.0
Изменения ломающие совместимость
- [ns.Model]
destroyWith
стал статическим методомns.Model.destroyWith
- [ns.Model]
isCollection
стал статическим методомns.Model.isCollection
- [ns.router] Все маршруты приведены к единому виду
paramName:paramType( =defaultValue | ==filter )
- [ns.View] Событие
ns-view-repaint
переименовано вns-view-touch
- [ns.View] Удалена поддержка subview в пользу гибкого механизма подписывания на события моделей и плагина ns-rivets
- Вместо no.Promise теперь используется Vow, как более стандартная реализация Promise
Новые возможности
- Новая функция
ns.assert
для проверки критичных условий и генерации ошибки, если условия не выполняются - У события
ns-page-before-load
добавился третий параметрnewPageUrl
(теперь обработчик должен выглядеть такonPageBeforeLoad: function(evt, pairOfPages, newPageUrl) { .. }
) - [ns.Model] Добавлен метод
ns.Model.prototype.hasDataChanged(data)
чтобы можно было проверить, что пришли те же данные и не повышать версию модели (и не перерисоввывать виды) - [ns.Model] Поддержка функции на месте
info.params
- [ns.Model] Добавлено событие
ns-model-init
на создание модели. - [ns.router] Добавлена поддержка фильтров, теперь можно задавать фильтр для параметра в урле
/{param:type==filter}
- [ns.View] Добавлен гибкий механизм подписки на изменения моделей, позволяющий игнорировать изменения выбранных моделей.
- [ns.View] Добавлен метод
ns.View.prototype.patchTree
, позволяющий расширять дерево шаблонизации дополнительными данными. - [ns.View] Поддержка функции на месте
info.params
Исправления
- [ns.View] Исправлена множественная подписка на
ns-model-changed
у вида. - [ns.request] Исправлен баг в
ns.requestManager
: иногда для модели в состоянии ошибки ставился статус, что она ок - [ns.router] Исправлена валидация значения параметра (раньше
a123
тоже подходило под типint
, что не есть верно) - [ns.router] Исправлена ошибка в
ns.router.generateUrl
- не urlencode-ились параметры при генерации урла