Skip to content

Releases: yandex-ui/noscript

v0.4.5

14 Aug 11:25
Compare
Choose a tag to compare

Несовместимые изменения

  • [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

11 Aug 08:45
Compare
Choose a tag to compare

Исправления

  • [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

29 Jul 09:20
Compare
Choose a tag to compare

Новые возможности

  • [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

25 Jul 14:31
Compare
Choose a tag to compare

Существенных изменений нет, v0.4.1 была неправильно опубликована в npm

v0.4.1

23 Jul 13:24
Compare
Choose a tag to compare

Исправления

  • [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

21 Jul 08:16
Compare
Choose a tag to compare

Новые возможности

  • [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

23 Jun 12:34
Compare
Choose a tag to compare

Новые возможности

  • [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

06 May 11:43
Compare
Choose a tag to compare

Изменения ломающие совместимость

  • [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-ились параметры при генерации урла