pulltorefresh.js - 暂时禁用

时间:2017-07-31 23:43:16

标签: javascript pull-to-refresh

我正在使用这个PullToRefresh插件:

https://github.com/BoxFactura/pulltorefresh.js#api

它运作良好,但我的页面上有一个带有div内联滚动的弹出窗口。 问题是,当我想向上滚动(在div中)时,会触发PullToRefresh。有可能"删除"或者在我的弹出窗口打开时暂时禁用PullToRefresh?

Decimal?

编辑: PullToRefresh.init({ mainElement: 'body', onRefresh: function(){ refreshAll(); } }); //无效

EDIT2: https://github.com/BoxFactura/pulltorefresh.js/blob/master/dist/pulltorefresh.js

2 个答案:

答案 0 :(得分:7)

PullToRefresh.init()会返回一个destroy()函数作为回调的对象:https://github.com/BoxFactura/pulltorefresh.js/blob/master/dist/pulltorefresh.js#L326

var refresher = PullToRefresh.init({
    mainElement: 'body',
    onRefresh: function(){
        refreshAll();
    }
});

// destroy the PullToRefresh EventListeners when you open your popup
refresher.destroy()

还有一个开放的Github问题,关于在初始化后改进销毁这个库的方法:https://github.com/BoxFactura/pulltorefresh.js/issues/22

答案 1 :(得分:0)

IMO有两种合理的方法可以做到这一点。

您可以定义triggerElement并将叠加层置于此triggerElement:

之外
PullToRefresh.init({
    mainElement: 'body',
    triggerElement: '#mainContent',
    onRefresh: refreshAll
});

标记有点像这样

<body>
    <div id="containerForOverlays"></div>
    <div id="mainContent"></div>
</body>

这样,#containerForOverlays内的所有内容都不会触发刷新。

如果你的版本已经支持它,你可以使用新的钩子shouldPullToRefresh()

PullToRefresh依赖于要检查的复选框的示例

<label><input id="refresh" type="checkbox"> Pull to Refresh?</label>

一样使用它
PullToRefresh.init({
    mainElement: 'body',
    shouldPullToRefresh: function(){
        return document.getElementById('pullToRefresh').checked
    },
    onRefresh: refreshAll
});

当然,我并不建议您在生产代码中使用复选框。我只想展示如何动态&#34;打开和关闭PullToRefresh&#34; 。在此示例中,取决于要检查的复选框。

由您决定为您的应用程序实施正确的shouldPullToRefresh(),以确定PullToRefresh应该是否有效。