Показать сообщение отдельно
  #1 (permalink)  
Старый 07.01.2017, 01:46
Новичок на форуме
Отправить личное сообщение для ANVoevodin Посмотреть профиль Найти все сообщения от ANVoevodin
 
Регистрация: 07.01.2017
Сообщений: 2

RequireJS на вторичной загрузке скрипта возвращает undefined
Всем привет. Пытаюсь сделать такую вещь используя RequireJS:
1. Есть скрипт Script1.js, который выполняет какие-то действия с данными из скрипта DB.js.
2. Есть скрипт Script2.js, который так же выполняет какие-то действия с данными из скрипта DB и подгружается этот скрипт из script1.js.
3. Есть сам скрипт DB, который просто имеет переменные с необходимыми данными.
Примерный кусок кода:
//Script1.js
define(["DB", "Script2"], function (DB, Script2) {
	return function Script1() {
		console.log(DB); //выводит function () { }, всё круто
		this.script2 = new Script2();
	}
);

//Script2.js
define(["DB"], function (DB) {
	return function Script2(cid) {
		console.log(DB); //выводит undefined, не то, что хотелось бы
	}
});

//DB.js
define(function () {
	//сюда код попадает единственный раз, когда RequireJS подключает его из Script1.js
	var DB = function () {};
	DB.someData = { one: "two" };
	return DB;
});


В Script2.js в переменную DB почему-то приходит undefined. Т.е. типа файл DB уже подгружался однажды, и RequireJS решил просто ничего не делать и не возвращать. Я уверен, что он знает, что делает, но хочется узнать как всё таки получить то, что я у него прошу? DB - это такое некое подобие "класса" со статическими свойствами. В данной реализации пока пытался решить проблему я понял, что то, что сейчас написано если бы и работало как я думал, то каждый раз возвращалась бы новая функция-конструктор DB, а хотелось бы ссылку на созданную в начале. В общем, пытался объяснить как мог, итог: приходит undefined, хотя я ожидал функцию-конструктор DB. Если вы помочь хотите, но проблемы не поняли, я попытаюсь объяснить подробнее
Ответить с цитированием