У меня есть этот код http://jsfiddle.net/QRcF5/2/itemView вызвать пользовательское событие, достигающих parrent
$(function() {
var Header = Backbone.Marionette.ItemView.extend({
template: _.template('<h4>TEST</h4><button>EDIT</button>'),
tagName: 'nav',
triggers: {
'click button': 'btn_clicked'
}
}),
Layout = Backbone.Marionette.Layout.extend({
template: _.template('<header></header>'),
regions: {
header: 'header'
},
events: {
'itemview:btn_clicked': 'clicked'
},
clicked: function() {
alert('Ana are mere');
}
});
layout = new Layout();
$('body').append(layout.render().el);
layout.header.show(new Header());
});
Я использую макет с одной ItemView (позже я хочу более сложную вложенности) и хотите, чтобы захватить в раскладке для события что происходит в ITEMVIEW. Кажется, что он не пузырится вверх, или я делаю что-то не так.
UPDATE 1 Я пробовал событие, триггера (для ребенка) и событие (для родителей), но я до сих пор не могу получить событие пойман внутри родителя.
можно использовать:
_.extend(App.vent, Backbone.Events);
Backbone.Marionette.ItemView.extend({
....
App.vent.trigger('btn_clicked');
....
});
Backbone.Marionette.Layout.extend({
....
App.vent.on('btn_clicked', function() { doCoding(); });
....
});
Но этот путь я разорвать инкапсуляцию. Есть ли способ сохранить инкапсуляцию с помощью запуска триггеров Marionette и сохранить все это в макете и не загрязнять все приложение?
UPDATE 2
Я обновить jsfiddle использовать _.extend (вентиляционные, Backbone.Events). Если у кого-то есть лучший образец для этого, сообщите нам: D
Я использую itemview в пути: https://github.com/marionettejs/backbone.marionette/blob/master/docs/marionette.collectionview.md#itemremoved-event Возможно, я ошибаюсь. – Symba
Что вы будете делать, это слушать события, которые происходят в объекте itemview, который существует в JS-коде. События, которые происходят в DOM, не совпадают с событиями, которые происходят в javascript. Если вы слушаете клики, которые происходят в DOM, тогда вы должны сделать это, используя нижний фрагмент кода, который я написал. Если вы слушаете события, которые происходят на объекте просмотра марионетки, тогда вы должны использовать свой путь (мой верхний) – Scott
Я ищу связь между itemview и макетом в Marionette (например, у нас есть внутренняя связь между моделью и представлением в Backbone) – Symba