如何在requirejs、javascript中的不同模块之间共享数据
How to share data between different modules in requirejs, javascript
我想在不同的模块之间共享一些数据,方法是创建一个模块,例如dataService
,在其中放入一个变量,然后将该模块作为依赖项插入其他模块中。这是代码(不起作用):
define('dataService', function () {
var quotes = [];
return {
quotesArray: quotes,
};
});
require(['dataService'], function (dataService) {
dataService.quotesArray {1, 2, 3}; // setting the quotes variable
});
define('otherModule', ['dataService'], function (dataService) {
var x = dataService.quotesArray; // x = empty Array, why?
});
以下是解决方法:
define('dataService', function () {
var quotes = [];
var getQuotes = function () {
return quotes;
};
var setQuotes = function (newQuotes) {
quotes = newQuotes;
};
return {
getQuotes: getQuotes,
};
});
require(['dataService'], function (dataService) {
var x = dataService.getQuotes(); // now I can get/set the quotes variable
dataService.setQuotes();
});
我只是想知道在不同的模块中访问一些数据是否是一种正确的方式?
为什么第一个选项不起作用?
要实现这一点,您需要创建两者的实例,因此其中一个覆盖另一个的属性:
define('Quotes', function (Module) {
return {
quotesArray: ['a', 'b', 'c']
};
});
define('Service', ['Quotes'], function (quotes) {
console.log(1, quotes.quotesArray); // ["a", "b", "c"]
quotes.quotesArray = [1, 2, 3];
});
require(['Service', 'Quotes'], function(service, quotes) {
console.log(2, quotes.quotesArray); // [1, 2, 3]
});
这是一把正在工作的小提琴:http://jsfiddle.net/kmturley/aHgMJ/
相关文章:
- 如何在 Angularjs 中的交叉模块之间共享数据
- 角度控制器名称在模块之间冲突
- 网络应用程序:模块之间相互交流
- 如何在模块之间共享对象
- RequireJS:如何在模块之间传递更新的数据
- 角度依赖注入,使用服务在模块之间传递值
- 如何在模块之间更新此变量的值
- 在模块之间传递对象引用
- 在模块之间传递值
- 在模块之间共享的事件发射器
- 如何在 AngularJS 中的两个独立模块之间共享数据
- 奇怪的壁虎行为(试图在js模块之间传递一个nsiDomWindows数组)
- Angular - 如何在模块之间共享控制器
- 如何在javascript模块之间进行通信
- 减少RequireJS模块之间的代码重复
- 如何在requirejs、javascript中的不同模块之间共享数据
- 寻找在模块之间导出和导入变量的最佳方式
- 什么'这是允许一个节点进程在其自己的模块之间进行通信的最具规模友好的方式
- PubSub模式用于在两个解耦的javascript模块之间传输数据
- 如何在两个模块之间传递事件数据