gpt4 book ai didi

javascript - 如何在requirejs、javascript中的不同模块之间共享数据

转载 作者:数据小太阳 更新时间:2023-10-29 06:12:03 26 4
gpt4 key购买 nike

我想通过创建一个模块在不同模块之间共享一些数据,例如调用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]
});

这是一个有效的 fiddle : http://jsfiddle.net/kmturley/aHgMJ/

关于javascript - 如何在requirejs、javascript中的不同模块之间共享数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18450276/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com