У меня есть модуль, который имеет 2 зависимых модуля. В родительском модуле есть метод, который я бы хотел вызвать из обоих дочерних модулей. Как я мог это сделать?Как вызвать метод родительского модуля из дочернего модуля в requirejs?
Есть ли другой способ передачи объекта родительского модуля в конструктор дочернего модуля?
define(['child1', 'child2'], function (child1, child2) {
return {
init: function() {
child1.init();
child2.init();
},
parentMethod: function() {
console.log('called');
}
}
});
/*child1*/
define(function() {
return {
init: function() {
//call parentMethod()
}
}
});
/*child2*/
define(function() {
return {
init: function() {
//call parentMethod()
}
}
});
Я сделал это (передайте объект в init для детей), но я искал другой способ сделать это. Может быть, другая архитектура? Лучшая практика? – robert
Лучшей практикой может быть то, чтобы дети излучали событие (используя jQuery или библиотеку событий) и имели родительский дескриптор события. В идеале, дети не должны знать родителя, поэтому должно быть задание родителя знать, как обрабатывать событие (ы), которое излучается. –
@ kevin.groat Я использую событие в некоторых случаях и ссылки на другие модули/классы/экземпляры в других случаях. Это зависит от деталей проблемы, которую нужно решить. У меня есть библиотеки, где использование излучателей событий будет означать чрезмерную разработку. У меня есть библиотеки, где * not * использование излучателей событий приведет к слишком тесной связи. – Louis