Framework7 事件重复的问题


如果某个按钮一直都存在(比如在 index.html 中定义的),那么每次在子页面的 onPageInit 事件中绑定该按钮的 click 事件就可能出现重复绑定,例如以下代码:

myApp.onPageInit('list', function (page) {
    $$('.popup-district .button').click(function(){
        console.log('clicked');
    });
});

当多次切换到 list 页面后,在点击该按钮,在浏览器的开发者工具中将同时打印多次 'clicked' 日志。

将事件的方法定义为全局函数可解决次问题:

function clickHandler(){
    console.log('clicked');
}
myApp.onPageInit('list', function (page) {
    $$('.popup-district .button').click(clickHandler);
});

注:也只有全局性的事件方法绑定才能使用解绑事件:

function clickHandler(){
    console.log('clicked');
}
// Add event listener
$$('a').on('click', clickHandler);
// Remove event listener
$$('a').off('click', clickHandler);

 


前一篇:
后一篇:

评论

wyc 12月09日 18:11  回复

/移除所有事件绑定
app.onPageInit(“*”,function(){
$(“.popup”).off(“click”,”**”);
$(“.modal”).off(“click”,”**”);
$(“.popover”).off(“click”,”**”);
});

preloadPreviousPage:false,//预加载上一页,为了能让”滑动返回上一页”功能正常工作,这个值应该设置为 true。

发表评论