Sto creando un'app in Backbone.js che ha una vista padre e più figli. Le viste secondarie contengono collegamenti che ascoltano ed eseguono una funzione.Perché gli eventi non vengono attivati dopo il secondo rendering in Backbone.js?
Il genitore memorizza un elenco di tutte le viste figli. Nella funzione di rendering, dopo che è fatto calcolando il proprio html, lo fa il seguente:
$(this.el).html(html);
for (var i = 0; i < this.views.length; i++){
$('.children', this.el).append(this.views[i].render().el);
}
RISPOSTA: Il problema era che stavo creando il collegamento durante il rendering. Cioè sul primo rendering (che è stato chiamato da init) l'evento è stato correttamente associato al collegamento. Tuttavia, poiché tutte le seguenti chiamate di rendering ricreano l'intero elemento, il nuovo collegamento non ha il gestore associato ad esso. Questo è stato risolto attraverso una soluzione @ Tom Tu di aggiungere this.delegateEvents()
al render
aggiunto un po 'più particolari, spero che aiuta –
che è davvero un buon pensiero, ma ho aggiunto la rimozione codice sopra. Inoltre, gli eventi non possono essere impostati in modo errato o non spareranno in primo luogo. – chacham15