我试图使用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