Ok У меня есть макет, как в этой картинке:обработка между видами событий
В таблице в верхней части экрана, сделанный:
MessageListView
define(['backbone','collections/messages','views/message'], function(Backbone, MessageCollection, MessageView) {
var MessageListView = Backbone.View.extend({
el: '#messagesContainer',
initialize: function() {
this.collection = new MessageCollection();
this.collection.fetch({reset:true});
this.listenTo(this.collection, 'reset', this.render);
this.table = this.$el.find("table tbody");
this.render();
},
render: function() {
this.collection.each(function(message, index) {
this.renderMessage(message, index);
}, this);
},
renderMessage: function(message, index) {
var view = new MessageView({
model:message,
className: (index % 2 == 0) ? "even" : "odd"
});
this.table.append(view.render().el);
}
});
return MessageListView;
});
MessageView
define(['backbone','models/message'], function(Backbone, MessageCollection, MessageView) {
var MessageView = Backbone.View.extend({
template: _.template($("#messageTemplate").html()),
render: function() {
this.setElement(this.template(this.model.toJSON()));
return this;
},
events:{
'click':'select'
},
select: function() {
// WHAT TO DO HERE?
}
});
return MessageView;
});
APPVIEW
define(['backbone','views/messages'], function(Backbone, MessageList) {
var App = Backbone.View.extend({
initialize: function() {
new MessageList();
}
});
return App;
});
Я скоро добавит новый вид (возможно "PreviewView") в нижней части экрана.
Я хочу что-то сделать внутри «PreviewView», когда пользователь нажимает на строку.
Например, может быть интересно отображать атрибуты другой модели (подробности, например) внутри PreviewView.
Какая практика?
- с ссылкой на PreviewView внутри каждого MessageView?
- запуск событий внутри метода выбора и прослушивание их с использованием on() внутри представления предварительного просмотра.
- с использованием переходного атрибута «selected» в моей модели и заставить PreviewView прослушивать события «изменения» коллекции?
Спасибо, если вам нужно более подробно рассказать мне, пожалуйста, отредактировав вопрос.
нормально, но как о прохождении его выбранная модель. Как PreviewView может узнать, какая модель в коллекции выбрана? Может быть, я могу передать на автобусе события сама модель? –
уверен, триггер также принимает аргумент: App.vent.trigger ('PreviewView.show ', model); –
, на ваш взгляд, лучше оставить вид приложения (верхний уровень один) не осведомленным о том, что делает основной вид, и использовать агрегатор событий, поскольку вы предложили отключить все представления .... ИЛИ иметь коллекции и все в вид приложения? –