Penso di avere un fondamentale fraintendimento su come utilizzare Marionette.Layout
.Informazioni sui layout in Marionette per Backbone.js
Sto cercando di qualcosa di simile:
Il layout prevede due Marinotette.ItemView
s: Il "esplodere" ItemView
e il "PopStar" ItemView
. Questo layout è progettato per contenere sempre questi punti di vista, così ho cercato di fare questo:
var TheLayout = Backbone.Marionette.Layout.extend({
template: '#the=layout-template',
regions: {
explode: '#explode-region',
popstar: '#popstar-region'
}
initialize:function(options){
_.bindAll(this);
var explodeView = new ExplodeView();
this.explode.show(explodeView); // <-- This throws and exception because the regions are not available yet
}
})
Ma sembra che le regioni non sono disponibili fino a dopo il layout è reso. Ho provato a chiamare this.render()
prima di aggiungere le viste, ma questo non ha funzionato. Sono abbastanza sicuro che il problema fondamentale qui è che sto applicando il layout nella circostanza sbagliata.
Cosa dovrei fare in questa circostanza? Qual è l'ora corretta per utilizzare Marionette.Layout
?
Grazie!
Per quanto riguarda '_.bindAll (this)' sono ancora confuso in quali casi usarlo e in quali casi no. – CodeRain
Per la maggior parte dei metodi chiamati direttamente da Marionette, come i gestori di eventi e 'onRender',' onClose', il contesto è impostato correttamente da Marionette e non è necessario il 'bindAll'. Se qualcun altro sta chiamando il tuo metodo, ad esempio una callback jQuery da AJAX o un evento associato direttamente con jquery, e vuoi che il contesto 'questo' sia ancora la vista, allora' _.bindAll (this, 'myfunc') 'è il tuo amico. –
mi ha salvato la giornata :) – SAR