如何在javascript中将父方法包装在私有函数中时调用方法

时间:2012-02-04 17:41:16

标签: javascript iscroll4

我不确定我是否正确地提出了我的问题,但无论如何......

我正在使用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);
};

我使用Namespace.iscroll();

在我需要的任何页面上调用iscroll

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

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

1 个答案:

答案 0 :(得分: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);
};

然后你可以这样做一个refesh:

Namespace.myScroll.refresh();

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