【发布时间】:2015-02-11 16:25:03
【问题描述】:
这是我第一次研究 requirejs。我一直在通过移植我的一个旧项目来做到这一点。到目前为止,进展顺利。到现在为止。
我一直在做的是保留一个站点设置对象,其中包含系统设置,例如窗口高度、窗口宽度、文档高度、滚动顶部等。在那里我使用调整大小和滚动事件更新了这些值。这些总是我可以访问的全局变量。
例如(使用 jQuery)
var mySettingsObject = {};
mySettingsObject.Init = function() {
this.winWidth = $(window).width();
$(window).resize(function(e) {
mySettingsObject.winWidth = $(window).width();
});
};
$(document).ready(function) {
mySettingsObject.Init();
});
现在我可以随时从任何函数调用 mySettingsObject.winWidth 来访问该变量,并且它始终是最新的。
我想了解的是如何在 requirejs 中使用模块依赖项来获得相同的行为?
这是我的两个示例模块
define('system', function() {
// Window settings
var winWidth = $(window).width();
$(window).resize(function(e) {
winWidth = $(window).width();
}
return {
winWidth: winWidth
};
});
// (is run on dom load)
define('myModule', ['system'], function(system) {
$(window).on('resize', function() {
if (system.winHeight === xyz) {
// do something
}
});
});
system.winHeight 按预期工作,并在 dom 加载时为我提供窗口高度。现在,如果我调整浏览器的大小,如何在 myModule 中让该变量自行更新,即如何让两个模块进行通信。
【问题讨论】:
-
你开始你的问题谈论宽度和结束谈论高度。你的意思是从头到尾都在谈论宽度,不是吗?
-
是的,我做到了:) 但是,宽度,高度,在这种情况下,它真的是一样的。
标签: javascript jquery dependency-injection requirejs