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- название текущегоlayoutns.page.current.params- текущие параметрыns.page.currentUrl- адрес текущей страницы
Этот механизм позволяет блокировать переходы по страницам. Например, с помощью него можно блокировать уход с формы, если не были сохранены изменения.
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;
}
}
});Этот модуль хранит историю приложения. Он нужен, т.к. в History API нельзя получить произвольное состояние на N шагов назад.
Имеет два метода:
ns.page.history.back- переход "назад". Этот метод не аналогичен кнопке "Назад" в браузере. Так, при отсутствии истории, этот метод перейдет на дефолтную страницу приложения (ns.page.getDefaultUrl), а не выйдет из него.ns.page.history.getPrevious(n)- возвращает урл N страниц назад. 0 - предыдующая страница.