我試圖使用OnsenUI 2(截至目前的rc15)的pushPage()
函數。旁邊的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]));
})
當我通過分配器兩個頁面之間切換,它開始拋出這個(多我每次頁面之間切換時)
[未定義:1]未捕獲(承諾)分流器側被鎖定。
我認爲正在發生的事情是,我打開一個頁面,離開它,當我再次訪問它,它再次加載頁面。但是這似乎並沒有在這樣as this OnsenUI例子中的行爲:
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()
請求,不知道爲什麼。
這兩個錯誤似乎只發生在紋波模擬器(通過VS2015)。我似乎無法在Android模擬器中重現它們(但是無論如何,$(".tile_handler").on("click", ".imalink", function() {
代碼會多次引發錯誤)。我正在進一步測試。
你可以一遍又一遍沒有問題推在同一個頁面。我做了一個快速的codepen:https://codepen.io/anon/pen/NALzWZ表明。後退按鈕確實執行了popPage(),但正如您所看到的那樣,我一遍又一遍地將相同的page2.html模板推送到導航堆棧。通常,當我遇到這個錯誤或看到它時,還有其他事情正在發生。 – Munsterlander
這是否僅在iOS或瀏覽器中發生?如果你使用'fade-ios'動畫,它也會發生嗎? –
我很少裝備,所以我現在只有模擬器可以使用。這發生在Android和iOS上的Ripple Emulator中。我添加了CodePen來重現錯誤。 – rancor1223