簡體   English   中英

RequireJS:如何在模塊之間傳遞更新的數據

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM