Привет, я изучаю магистраль, и у меня возникают проблемы с привязкой событий к представлениям. Моя проблема в том, что у меня есть конструктор представления, который при вызове связывает все представления с событием нажатия кнопки, которое является только частью одного представления. Я хотел бы, чтобы событие нажатия кнопки было привязано только к 1 представлению, содержащему кнопку.
http://jsbin.com/tunazatu/6/edit?js,console,output
- нажмите на все кнопки просмотра
- затем нажмите назад, чтобы просмотреть 1
- нажмите красную кнопку (все модели представлений console.log их имена)
Итак, я просмотрел код из этого сообщения множественное срабатывание событий, которое показывает что у вас может быть несколько представлений с одним и тем же тегом el через tagName, но отображать события только на их html-элементы. Это также то, что сделано в примере localtodos от Jérôme Gravel-Niquet.
Я также пытался не объявлять el /tunazatu/7/edit?js,console,output, но тогда кажется, что никакое событие не связано.
var AppView = Backbone.View.extend({
tagName:"div", //tagName defined
getName:function(){
console.log(this.model.get('name'));
},
initialize:function(options){
this.listenTo(this.model, 'change', this.render);
var temp_mapper = {appView1:'#route1',appView2:'#route2',appView3:'#route3'};
var m_name = this.model.get('name');
this.template = _.template($(temp_mapper[m_name]).html()); //choose the correct template
},
render:function(){
var temp = this.template(this.model.toJSON()); //populate the template with model data
var newElement = this.$el.html(temp); //put it in the view's tagName
$('#content').html(newElement);
},
events:{
"click button":"log"
},
log:function(){
this.getName();
}
});