我正在尝试使用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 (in promise) 分离器侧被锁定。
我假设正在发生的是我加载一个页面,离开它,当我再次访问它时,它再次加载该页面。然而,这似乎不是 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()
功能应该删除以前加载的页面并防止这种情况发生。但是参考文献没有使用它,所以我认为我做错了什么。但我不知道是什么。
更新:
我设法在 CodePen 中重现了这两个问题。这是拆分器错误,这是pushPage()
一个。似乎pushPage()
是我的功能有问题,因为pushPage()
每次单击它时它都会添加一个请求,但不知道为什么。
这两个错误似乎只发生在 Ripple 模拟器中(通过 VS2015)。我似乎无法在 Android Emulator 中重现它们(但$(".tile_handler").on("click", ".imalink", function () {
无论如何代码都会多次触发错误)。我正在进一步测试这个。