我有以下(虽然)小的“揭示模块模式”实现代码:
(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/