Как вы используете раскрывающийся шаблон модуля с документом jQuery.ready?

У меня есть следующий (хотя и) небольшой код реализации «шаблона модуля обнаружения»:

(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 префикс window при доступе к нему в рамках $(document).ready()


comment
Не могли бы вы изменить этот код, чтобы он не работал? У меня не было проблем с тем, чтобы этот код + функция готовности документа работали должным образом. Вы получаете какие-либо ошибки?   -  person Andy    schedule 28.08.2013
comment
Привет, Энди. Я разобрался с проблемой, я не добавлял к CkSpace префикс window перед попыткой доступа к нему. Очевидно, мне нужно больше кофеина.   -  person BenM    schedule 28.08.2013


Ответы (1)


Бен,

Если я понял вашу озабоченность, этот фрагмент кода может вам помочь.

window.CkSpace = {};

(function (CkSpace) {

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

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

window.CkSpace.getLoanValues();

Скрипт: http://jsfiddle.net/GDcVt/

Если нет, не могли бы вы сделать его более минимальным, поскольку внутренний код не имеет отношения к области действия. Я не уверен, существует ли объект в области окна, прежде чем вы передадите его функции.

person Pallab    schedule 28.08.2013
comment
Здравствуйте Паллаб. Я пытался получить доступ к CkSpace без префикса window. Ваш код помог мне понять это, так что спасибо. - person BenM; 28.08.2013