![](/img/trans.png)
[英]How to share data between different modules in requirejs, javascript
[英]RequireJS: How to pass updated data between modules
這是我第一次研究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中自動更新該變量,即如何使兩個模塊通信。
你可以指定你要導出到一個對象的值,這里所謂的exports
,並通過此對象上更新相應的字段更新的新值:
define('system', function() {
// Window settings
var exports = {};
exports.winWidth = $(window).width();
$(window).resize(function(e) {
exports.winWidth = $(window).width();
}
return exports;
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.