0

我不确定我的问题措辞是否正确,但无论如何......

我正在使用 iscroll 并将 iScroll init 调用包装在一个私有函数中以供以后使用。这就是我所拥有的:

 Namespace.iscroll =  function () {
        var myScroll;
      myScroll = new iScroll('mainContent-wrap', { 
          hScrollbar: false 
       });

    document.addEventListener('touchmove', function (e) { e.preventDefault(); }, false);
    document.addEventListener('DOMContentLoaded', Namespace.iscroll, false);
};

我通过使用在我需要的任何页面上调用 iscrollNamespace.iscroll();

我的问题是,现在我想使用 iScrollmyScroll.refresh();或使用setTimeoutiScroll 文档中描述的函数来刷新 iScroll。

由于我将原始 init 调用包装在私有函数中,如何运行刷新和其他方法(如销毁)?

4

1 回答 1

1

如果您在函数运行后尝试访问该myScroll变量iscroll,答案是您不能。那个时候就没了。您必须将其保存在其他地方,以便您可以访问它。一个想法是将它放在同一个对象上,iscroll如下所示:

Namespace.iscroll = function () {
    Namespace.myScroll = new iScroll('mainContent-wrap', {
        hScrollbar: false
    });

    document.addEventListener('touchmove', function (e) { e.preventDefault(); }, false);
    document.addEventListener('DOMContentLoaded', Pelau.iscroll, false);
};

然后,您可以像这样进行刷新:

Namespace.myScroll.refresh();

关键是您将 myScroll 存储在某个不是临时局部变量的持久和公共位置。

于 2012-02-04T17:55:34.170 回答