2015-06-18 3 views
0

Я изучаю Магистраль и для жизни меня не может удалить модель из коллекции. Событие «удалить» коллекции срабатывает, но коллекция кажется неизменной. Вот что я до сих пор: http://jsbin.com/becamo/edit?js,outputBackbone.js удалить модель из коллекции

Я удаляю модель из коллекции при нажатии.

Затем в режиме просмотра списка происходит удаление события и снова вызывается render().

Из консоли console.log() видно, что событие удаления срабатывает, но ничего не меняется. И когда я проверяю переменную коллекции, она не изменяется. Я пробовал, вероятно, 50 вариантов сейчас, в то время как поиск в Интернете для подсказок, и ничего, кажется, не работает.

ответ

1

Вам не нужно реализовывать remove в коллекции - просто удаление вашей попытки переопределить значение по умолчанию устраняет проблему. Таким образом, реализация коллекции становится:

var UserCollection = Backbone.Collection.extend({ 
    model: User 
}); 

Вместо:

var UserCollection = Backbone.Collection.extend({ 
    model: User, 
    initialize: function() { 
    this.on('remove', this.remove); 
    }, 
    remove: function() { 
    console.log('Collection Event: REMOVE'); 
    } 
}); 

http://jsbin.com/jefudiyido/1/edit?js,output

+0

Wow. Я только добавил, что я мог зарегистрировать, что это произошло. Я не понимал, что это переопределит поведение по умолчанию (нехватка сна). Спасибо! – Zuko

+0

@ Zuko Нет проблем - если вы хотите зарегистрировать его, вы можете добавить 'removeLog' или какое-то подобное имя метода, которое не сталкивается с' remove'. Или вы можете использовать 'remove' и вызывать родительский' remove' тоже. – Cymen