2012-05-15 3 views
1

У меня есть следующий вид, где я пытаюсь связать событие click с кнопкой delete, но он, похоже, ничего не запускает. Не получая никаких ошибок в консоли, он просто не привязывает событие «click».Backbone.js удалить событие не запускает

Элемент span.delete глубоко вложен в кучу других элементов, не уверен, что это важно, я также пробовал его как прямой дочерний элемент, но все равно не пошел.

var ListRow = Backbone.View.extend(
{ 
    events: 
    { 
     'click span.delete': 'remove' 
    }, 

    initialize: function() 
    { 
     _.bindAll(this, 'render', 'unrender', 'remove'); 

     this.model.bind('remove', this.unrender); 
    }, 

    render: function() 
    { 
     this.el = _.template($('#tpl-sTableList_' + key + 'Row').html()); 

     return this; 
    }, 

    unrender: function() 
    { 
     $(this.el).fadeOut(); 
    }, 

    remove: function() 
    { 
     this.model.destroy(); 
    } 
}); 

ответ

0

Нашли проблему, потому что я был только настройки объекта эль, но не делает его, поэтому вместо того, чтобы:

this.el = 

должен быть

$(this.el).html(); 

В противном случае все работает, как ожидалось.

+1

Разве 'это. $ El' существует? так что это должно быть 'this. $ el.html()' – HungryCoder

+0

Да, это тоже работает. – Rob

1

Там нет значения по умолчанию remove события на модели, есть только удалить событие приходит из коллекции, так что если вы хотите, чтобы удалить вид, когда модель получает удалена из коллекции, это, вероятно, лучше поставить

this.collection.bind('remove', this.onRemove, this); 

в вашем ListView (как я предполагаю, что вы используете ListView и ListItemView основанный на вашем примере), а затем ваш метод onRemove передает модель в качестве аргумента, так что вы можете найти вид, связанный с ним ,

+0

Все еще не может заставить это работать, я думаю, что хотя бы функция remove вызывается, когда я нажимаю на span.delete, но, похоже, не срабатывает. – Rob

Смежные вопросы