2016-12-06 99 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); 
      } 
     }); 
    } 
} 
相關問題