Всем доброго времени суток. В backbone js есть возможность структурировать вид.
var view ={
events:{
"click #id_item":'myfun'
},
myfun:function(evt){
console.log('myfun');
}
}
Как реализовать родителя на чистом js чтобы он понимал данную конструкцию ?
Как-то так:
var view ={
events:{
"click #id_item":'myfun'
},
myfun:function(evt){
console.log('myfun');
}
};
function setEvents(model){
// Тут всякие проверки, опустим для наглядности
Object.keys(model.events).forEach(part => {
// Разделяем событие и селектор (т. к. селектор может содержать пробелы, собираем оставшиеся кусочки и склеиваем их)
let [eventName, ...selector] = part.split(' ');
selector = selector.join(' ');
let element = document.querySelector(selector);
// Если по селектору ничего не нашли - выход
if(element === null) return;
// Навешивание слушателя
// Довольно странно что методы не лежат в отдельном ключе типа methods
element.addEventListener(eventName, model[model.events[part]]);
});
}
setEvents(view);
<div>
<span id='id_item'>Я тут</span><br />
<span id='something'>Это не я</span>
</div>
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости