微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

javascript – window.setInterval()的dojo.hitch()范围

我试图使用dojo fadeIn / Out产生闪烁效果.

在widget类的声明中定义了以下代码片段:

 _startHighlightEffect : function() {
      var blinkInterval = 5000; //Scope here is that of the parent widget
      window.setInterval ( function() {
              dojo.fadeOut(
              {
                      node: this._headerDiv.domNode,
                      onEnd: function() {
                              dojo.fadeIn({node: this._headerDiv.domNode},3000).play();
                      }
              },3000).play();
      }, blinkInterval);
  },

_highlightEffect : function() {
    this.func = dojo.hitch(this,this._startHighlightEffect);
    this.func();
}

我面临的问题是,它说“this._headerDiv未定义”.在使用firebug进行检查时,this._headerDiv的范围是Window而不是父窗口小部件.

请帮我理解我在这里缺少什么.

解决方法:

您可以在上下文中保存上下文,并在以后使用它:

_startHighlightEffect : function() {
      var blinkInterval = 5000; //Scope here is that of the parent widget
      var that = this; // save the scope
      window.setInterval ( function() {
              dojo.fadeOut(
              {
                      node: that._headerDiv.domNode, // use the saved scope
                      onEnd: function() {
                              dojo.fadeIn({node: that._headerDiv.domNode},3000).play();
                      }
              },3000).play();
      }, blinkInterval);
  }

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐