javascript - 你如何在 jQuery 的 document.ready 中使用揭示模块模式?

标签 javascript jquery closures revealing-module-pattern self-executing-function

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

(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 作为其任何公共(public)成员的根命名空间。但是,当我将它与 $(document).ready() 结合使用时,我无法访问我的 CkSpace 命名空间,除非我在 $(document ).ready().

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

编辑:我似乎有点健忘,当在 $(document).ready()

最佳答案

本,

如果我理解您的顾虑,此代码片段可能会对您有所帮助。

window.CkSpace = {};

(function (CkSpace) {

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

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

window.CkSpace.getLoanValues();

fiddle :http://jsfiddle.net/GDcVt/

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

关于javascript - 你如何在 jQuery 的 document.ready 中使用揭示模块模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18484586/

相关文章:

javascript 模块模式适用于 jsbin,但不适用于我的服务器/浏览器

php - 使用 php、Jquery 的聊天应用程序

javascript - 必填字段在 div 内不起作用

用于列表清理的Java one liner

javascript - javascript 中嵌套匿名方法的闭包

javascript - Microsoft Edge 创建文件对象

javascript - popup.js 何时启动?

javascript - 给定一个日期间隔范围,创建一个包含一天中所有 1440 分钟的数组,其中包含源间隔中每分钟出现的频率

Jquery Tabs 和 css 问题

python - 根据参数动态调用嵌套函数