var PlaylistView = Backbone.View.extend({
el: '#expanded-container',
initialize: function() {
var playlistModel = this.model;
this.stopListening(playlistModel.get('songs'), 'add');
var form = this.$('input');
$(form).keypress(function (e) {
if (e.charCode == 13) {
console.log("hey")
var query = form.val();
playlistModel.lookUpAndAddSingleSong(query);
}
});
this.listenTo(playlistModel.get('songs'), 'add', function (song) {
var songView = new SongView({ model: song });
this.$('.playlist-songs').prepend(songView.render().el);
});
Это фрагмент моего зрения Backbone, и я не могу понять, почему иногда то же songView
оказывается в два раза. С другой стороны, я вызываю PlaylistView.initialize()
вручную без воссоздания представления. Из-за этого я отменил регистрацию всех событий в начале инициализации, чтобы предотвратить одновременное прослушивание одного и того же события. Он выполняет свою работу, но только время от времени один и тот же songView отображается дважды. Я подозреваю, что это может быть какое-то состояние гонки, но я не смог выяснить причину. У кого-нибудь есть идея?остановкаListening() гонки состояние?
делает 'playlistModel.get («песни»)' всегда возвращают такая же ссылка на объект? В любом случае было бы безопаснее использовать 'stopListening()' без каких-либо аргументов, если это работает для вас. – psquared