如何将揭示模块模式与jQuery's文档.准备
How do you use the revealing module pattern with jQuery's document.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()
函数中声明的话?
编辑:我似乎有点健忘,在$(document).ready()
的范围内访问CkSpace时,我没有在它前面加上窗口
Ben,
如果我理解您的担忧,这个代码片段可能会对您有所帮助。
window.CkSpace = {};
(function (CkSpace) {
CkSpace.getLoanValues = function () {
alert('I provide loans');
}
} (window.CkSpace || {}, jQuery));
window.CkSpace.getLoanValues();
Fiddle:http://jsfiddle.net/GDcVt/
如果不能,请将其最小化,因为内部代码与范围无关。在将objcet传递给函数之前,我不确定它是否存在于窗口范围中。
相关文章:
- 在jquery文档准备好之前加载Modernizr
- 使用window[variablename]()调用函数;在文档中.准备
- Javascript/Css导航未显示在jquery文档上,仅在ie中准备就绪
- 当文档准备就绪时,将数据从一个文本框复制到另一个
- Javascript if else在文档准备功能中
- 如何在文档准备函数中调用变量的click函数
- Angular和jQuery ng包含在文档中.准备不工作
- AngularJS文档准备就绪,无法正常工作
- 将参数传递到准备好文档的.js文件
- 只有在文档内部的警报准备就绪后,触发器才能工作
- SVG正在等待文档在javascript中准备就绪
- $().bind 在未准备好文档的情况下无法正常工作
- 文档准备好与 UI Dilaog
- 需要在设备中准备好文档
- 在文档准备就绪之前,Javascript onload 事件和其他事件
- 当文档中的单个元素准备就绪时触发事件的最佳方法
- jQuery文档是否准备好等待通过Backbone动态注入的html元素
- document.getElementById 导致 jquery 文档准备执行两次
- Jquery文档准备好了函数声明
- Jquery在准备文档时加载脚本