1

我有以下(尽管)小的“揭示模块模式”实现代码:

(function (CkSpace, $, undefined) {

    CkSpace.GetLoanValues = function () {
        var url = "/Home/UpdateAPR";

        $.get(url, { Amount: $("#slider").slider("value"), Length: $("#slider2").slider("value") }, function (data) {
            $("#LoanAmount").html("£"+data.LoanAdvance);
            $("#TotalToRepay").html("£" + data.LoanGrossRepayable);
            $("#Representative").html(data.LoanAPR);
            $("#MonthlyRepayTerm").html(data.LoanTerm);
            $("#MonthlyFee").html("£" + data.LoanInstalment);
        });
    }

} (window.CkSpace = window.CkSpace || {}, jQuery));

我的印象是,通过使用window.CkSpace我将能够全局访问 CkSpace 作为其任何公共成员的根命名空间。但是,当我将它与它结合使用时,$(document).ready()除非CkSpace我在$(document).ready().

有人可以在这里向我解释范围问题吗?是否有办法避免在我的$(document).ready()函数中声明它?

编辑:我似乎有点健忘,当在范围内访问 CkSpace 时,我没有在$(document).ready()

4

1 回答 1

4

本,

如果我了解您的担忧,此代码段可能会对您有所帮助。

window.CkSpace = {};

(function (CkSpace) {

    CkSpace.getLoanValues = function () {
       alert('I provide loans');
    }

} (window.CkSpace || {}, jQuery));

window.CkSpace.getLoanValues();

小提琴:http: //jsfiddle.net/GDcVt/

如果不能,请尽量减少,因为内部代码与范围无关。在将对象传递给函数之前,我不确定对象是否确实存在于窗口范围内。

于 2013-08-28T10:15:43.587 回答