如何修复模块模式才能工作

时间:2016-12-06 19:11:25

标签: javascript jquery undefined module-pattern

我有一个不同文件中的模块,它本质上应该为我执行我的ajax请求(这是在ajaxCall.js中),我试图将此模块添加到全局窗口对象,以便我可以在另一个中使用它文件名为(basket-page.js),但我收到错误说明

  

未捕获的TypeError:无法读取未定义(...)

的属性“进程”

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();
});

2 个答案:

答案 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);
            }
        });
    }
}

答案 1 :(得分:0)

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