使用带requirejs的模块时丢失事件

时间:2014-05-20 19:53:40

标签: javascript requirejs

我在一个工作正常的JS文件中使用了javascript代码(使用XHR / AJAX)。当我将它拆分为requirejs应用程序中的单独模块时,我似乎无法处理事件对象&它显示为未定义(在Firefox 29.0.1中测试)。

致电模块:

ajax.onreadystatechange = new ajaxResponse().handleAjaxResponse(e); 

ajaxResponse

    define(["require", './url/urlCommon'], function(require, urlCommon) {  
        'use strict';
        var ajaxResponse = function() { 
               var ajax = null;
              // e = event || window.event;
               this.handleAjaxResponse = function() { 
                   if (typeof event === 'undefined') {
                          var event = event || window.event;
                       }
                      console.log('e is now:' + typeof e);

我也没有handleAjaxResponse方法中的事件句柄(错误:未定义)。任何关于我需要做什么来解决/解决这个问题的想法将不胜感激。

1 个答案:

答案 0 :(得分:0)

根据我之前的说明,它是由飞行员错误引起的。我使用匿名函数作为处理程序修改了对事件处理程序的调用,并将ajax / XHR对象传递给函数(应该是处理程序)。之前的实现似乎导致丢失了ajax / XHR对象的上下文。我相信可能有更好的解决方案和很高兴看到他们。

致电模块(新):

  ajax.onreadystatechange = function () {
          if (ajax.readyState == 4) {
              new ajaxResponse().handleAjaxResponse(ajax);
          }
      }

致电模块(旧):

ajax.onreadystatechange = new ajaxResponse().handleAjaxResponse(); //handleAjaxResponse(ajax);