Я пытаюсь использовать функцию pushPage()
функции OnsenUI 2 (rc15 на данный момент). Наряду с OnsenUI, я использую JQuery 3.Перемещение со страницы на страницу создает ошибки (дубликаты?)
Вот моя функция, которая при нажатии определенных элементов следует нажать на странице:
$(".tile_handler").on("click", ".imalink", function() {
var link = $(this).data().href;
if(link != null){
document.querySelector("#myNavigator").pushPage(link, { animation: "slide-ios" });
}
})
Когда я нажимаю страницу в первый раз, он отлично работает. Я использую кнопку возврата iOS для возврата. Затем я снова нажимаю на нее, и я получаю эту ошибку (и все чаще, когда я повторяю этот процесс):
[index.js: 450] Неиспользованный (в обещании) pushPage уже запущен.
Вот еще одна функция, которая должна загружать разделительные страницы:
$(".splitter_item").click(function() {
var address = $(this).data('address');
$('#content')[0].load(address).then(menu.close.bind($('#menu')[0]));
})
При переключении между двумя страницами через Splitter он начинает бросать это (и больше каждый раз, когда я переключаться между страницами)
[undefined: 1] Uncaught (в обещании) Сторона сплиттера заблокирована.
Что я предполагаю, что происходит, что я загрузить страницу, оставьте его, и когда я достигаю его снова, снова загружает страницу. Однако это не кажется, что поведение показано в примерах OnsenUI таких as this:
document.addEventListener('init', function(event) {
var page = event.target;
if (page.id === 'page1') {
page.querySelector('#push-button').onclick = function() {
document.querySelector('#myNavigator').pushPage('page2.html', {data: {title: 'Page 2'}});
};
} else if (page.id === 'page2') {
page.querySelector('ons-toolbar .center').innerHTML = page.data.title;
}
});
Существует popPage()
функции, которая должна удалить ранее загруженную страницу и будет препятствовать этому. Но ссылки не используют его, поэтому я предполагаю, что я делаю что-то неправильно. Но я не знаю, что.
UPDATE:
мне удалось воспроизвести обе проблемы в CodePen. Here - ошибка Splitter, а here - это pushPage()
. Кажется, что pushPage()
- проблема с моей функцией, поскольку она добавляет запрос pushPage()
каждый раз, когда я нажимаю на него, но не знаю, почему.
Обе ошибки, похоже, происходят только в эмуляторе Ripple (через VS2015). Кажется, я не могу воспроизвести их в Android-эмуляторе (но код $(".tile_handler").on("click", ".imalink", function() {
в любом случае срабатывает неоднократно). Я тестирую это дальше.
Вы можете перетаскивать одну и ту же страницу снова и снова без проблем. Я сделал быстрый код: https://codepen.io/anon/pen/NALzWZ, который демонстрирует это. Кнопка «Назад» выполняет popPage(), но, как вы можете видеть, я снова и снова запускаю один и тот же шаблон page2.html в стек навигации. Обычно, когда я получаю эту ошибку или вижу ее, происходит что-то еще. – Munsterlander
Это происходит только на iOS или в браузере? Также, если вы используете анимацию 'fade-ios'? –
Я немного недоукомплектован, поэтому у меня есть только эмуляторы для работы. Это происходит в Ripple Emulator на Android и iOS. Я добавил CodePen, воспроизводя ошибку. – rancor1223