2016-12-06 102 views
0

我有一个不同的文件中的模块,应该基本上执行我对我的ajax请求(这是在ajaxCall.js),我试图将此模块添加到全局窗口对象,这样我就可以在调用(篮page.js)另一个文件使用它,但我得到一个错误,说明我该如何解决我的模块模式工作

Uncaught TypeError: Cannot read property 'process' of undefined(…)

AjaxCall.js

"user strict"; 
window.ajaxCall = window.ajaxCall || {} 
var ajaxCall = (function() { 
var api = { 
    process: function (destinationUrl, dataToPost, callbackFunction) { 
     $.ajax({ 
      url: destinationUrl, 
      data: dataToPost, 
      method: "POST", 
      dataType: "JSON", 
      success: function (data) { 
       if (element.length > 0) { 
        callbackFunction(data, element); 
       } 
      }, 
      error: function (req, status, errorObj) { 
       console.log(status); 
      } 
     }); 
    } 
} 
window.ajaxCall = api; 
return api; 
})(); 

篮page.js

"use strict"; 

basket = basket || {}; 

var basket = (function (ajax) { 

    var api = { 

     init: function() { 
      $("#tblBasket").dataTable({ 
       bFilter: false, 
       pageLength: 10, 
       paging: true, 
       autoWidth: true, 
       columns: 
       [ 
        { "orderDataType": "dom-text", type: "string" }, 
        { "orderDataType": "dom-text-numeric" }, 
        null 
       ], 
       fixedColumns: true 
      }); 
     }, 

     removeBasketProductRow: function (data, element) { 
      if (data === true) { 
       element.remove(); 
      } 
     } 

    }; 

    $("#btnRemoveBasketProduct").click(function() { 
     var product = $(this).closest("tr"); 
     var productId = product.attr("id"); 
     window.ajaxCall.process("/Products/RemoveBasketProduct", productId, api.removeBasketProductRow); 
    }); 

    return api; 

})(window); 

$(document).ready(function() { 
    basket.init(); 
}); 
+1

你为什么要做'window.ajaxCall = api;'然后返回'api'给IIFE? – empiric

+0

而且它是''严格使用';',而且''成功'中的变量'元素'是未定义的 – empiric

+0

您确定在尝试执行函数时加载了两个文件吗? – empiric

回答

0

问题是确保我已经加载了我的其他脚本文件,因为这是将对象添加到全局窗口对象。

0

删除所有功能环绕。这是没有必要的。

"user strict"; 
window.ajaxCall = { 
    process: function (destinationUrl, dataToPost, callbackFunction) { 
     $.ajax({ 
      url: destinationUrl, 
      data: dataToPost, 
      method: "POST", 
      dataType: "JSON", 
      success: function (data) { 
       if (element.length > 0) { 
        callbackFunction(data, element); 
       } 
      }, 
      error: function (req, status, errorObj) { 
       console.log(status); 
      } 
     }); 
    } 
} 
相关问题