Показать сообщение отдельно
  #1 (permalink)  
Старый 11.04.2019, 06:02
Кандидат Javascript-наук
Отправить личное сообщение для pokk Посмотреть профиль Найти все сообщения от pokk
 
Регистрация: 30.01.2014
Сообщений: 145

Разбить обьект на несколько файлов
Добрый день, у меня есть объект, при открытии странице я пробегаю по нему и назначаю addEventListener id которые находятся в объекте.
objPageKalib={
	//--------------------------------------------------------------------------
	// "Id_IN_kalib_Kp": {	},
	// "id_td_U_250": {	},
	// "Id_IN_Kalib_Pout": {	},
	//--------------------------------------------------------------------------
	"Id_SaveKalib": {
			Type:	'click',
			action: function(element, data, index){download_mib('Load_kalib.BIN');}
	},
	//--------------------------------------------------------------------------
	"Id_OpenFileKalib": {
			Type:	'change',
			action: function(element, data, index){KalibOpenfile(element);}
	},
	//--------------------------------------------------------------------------
	"Id_IN_kalib_descusion": {
			Type:	'change',
			action: function(element, data, index){KalibSavePage('KalibDescus.CGI','Id_IN_kalib_descusion');}
	},
..............................
}


Со временем объект очень быстро вырос и я начинил разделять, постранично. Т.е на каждую страницу по своему объекту, а при загрузке страницы все объекты объеденяються в один получился вот такой косталь. Как можно сделать это более универсальные?
Что бы можно было надробить объект даже одной страницы на несколько частей, и потом не забывать их все сгруппировать(что бы автоматически это получалось).
Пока думаю сделать объект из объектов,в который буду добавляться мелкие объекты. А цикл переписать что бы он проходил по всем объектам и добавлял события. Есть ещё какие нибудь решения ?





/**
 * Overwrites obj1 values with obj2 and adds obj2 if non existent in obj1
 * @param obj1
 * @param obj2
 * @returns obj3 a new object based on obj1 and obj2
 */
function merge_options(obj1,obj2){
    var obj3 = {};
    for (var attrname in obj1) { obj3[attrname] = obj1[attrname]; }
    for (var attrname in obj2) { obj3[attrname] = obj2[attrname]; }
    return obj3;
}
//==================================================================================================
/*
	* @Описание:	Описание функции.
	* @Параметр:	
	* @Возврат:		Нету
*/
window.addEventListener('DOMContentLoaded', function() {
	var obj = {};	
	obj=merge_options(objOnclick,objOnInput);
	obj=merge_options(obj,objOnChange);
	obj=merge_options(obj,objPageKalib);
	obj=merge_options(obj,objPageState);
	obj=merge_options(obj,EventButt);
	
	for(var el in obj) {
			var handler = obj[el];
			var Type = handler.Type;
			
			if(typeof Type === 'undefined'){
				continue;
			}
			
			console.log(el);
			var butt=document.getElementById(el);
			console.log(butt);
			butt.addEventListener(Type,handler.action);
			if(typeof handler.Run === 'undefined'){
				//console.log(handler);
			}else{
				handler.Run();
			}
			//butt.addEventListener('click',handler.action);
	}
});



PS: Мелкие объекты хочу вынести в отдельные файлы вообще, или куски объекта если можно ?
Ответить с цитированием