Skip to content

Latest commit

 

History

History
61 lines (48 loc) · 3.4 KB

File metadata and controls

61 lines (48 loc) · 3.4 KB

Переходы по страницам (ns.page)

ns.page - специальный модуль для перехода по страницам внутри ns-приложения.

ns.page.go - главный метод. Разроваричивает адрес через ns.router, выбирает layout, запускает ns.Update и производит необходимые операции по смене урла в адресной строке и обновления названия (document.title) страницы. Метод возвращает промис от ns.Update, но иногда может вернуть отклоненный промис со статусами:

  • block - переход был заблокирован через ns.page.block

ns.page.title - точка расширения приложения. Позволяет задавать заголовки страниц.

Также модуль предоставляет полезные данные:

  • ns.page.current - текущие параметры страницы
  • ns.page.current.page - название текущего layout
  • ns.page.current.params - текущие параметры
  • ns.page.currentUrl - адрес текущей страницы

ns.page.block

Этот механизм позволяет блокировать переходы по страницам. Например, с помощью него можно блокировать уход с формы, если не были сохранены изменения.

ns.View.define('my-view', {
    events: {
        'ns-view-show': function() {
            // после показа вида, добавляем функцию блокировки
            ns.page.block.add( this.checkChanges.bind(this) );
        },
        'ns-view-hide': function() {
            // после скрытия вида, очищаем функции
            ns.page.block.clear();
        }
    },
    methods: {
        /**
         * @param {string} url ссылка, по которой выполняется переход
         */
        checkChanges: function(url) {
            if (this.hasUnsavedChanges()) {
                // здесь можно показать какое-то сообщение
                 
                // функция блокировки должна вернуть false, если переход нельзя осуществить
                return false;
            }
            
            return true;
        }
    }
 });

ns.page.history

Этот модуль хранит историю приложения. Он нужен, т.к. в History API нельзя получить произвольное состояние на N шагов назад.

Имеет два метода:

  • ns.page.history.back - переход "назад". Этот метод не аналогичен кнопке "Назад" в браузере. Так, при отсутствии истории, этот метод перейдет на дефолтную страницу приложения (ns.page.getDefaultUrl), а не выйдет из него.
  • ns.page.history.getPrevious(n) - возвращает урл N страниц назад. 0 - предыдующая страница.