Старый вопрос, но я убил пол дня на решение этого, поэтому я опубликую, как мне удалось обойти это.Этот вопрос кажется очень похожим на мою собственную проблему.Надеюсь, что это будет полезно для кого-то еще.
Я загружаю контроллеры / представления динамически, и все слушатели были подключены через app.control внутри init (контроллера) контроллера.Работал нормально, пока я не начал неоднократно разрушать / инициализировать представления.Слушатели оставались на представлениях после view.destroy (), поэтому инициализация их позже в будущем приводила к тому, что эти слушатели (то есть рендеринг, клики и т. Д.) Запускались дважды.
app.control({
'element': {
beforerender: {
fn: function(thing){
// beforerender stuff for thing
thing.on('select', function(this, record, item, index){
console.log('select fired');
});
},
single: true
},
}
});
Обратите внимание на «single: true», который прикреплен к «beforerender».Это важная часть.Все остальные слушатели, которые ранее были написаны как 'beforerender', были перемещены в него с помощью .on ().
Cheers!