Myślę, że mogę mieć fundamentalne niezrozumienie, w jaki sposób zamierza się używać Marionette.Layout
.Zrozumienie układów w marionetce dla Backbone.js
Próbuję coś takiego:
Układ zawiera dwa Marinotette.ItemView
: The "Explode" ItemView
i "PopStar" ItemView
. Układ ten został zaprojektowany, aby zawsze zawierać te poglądy, więc starałem się to zrobić:
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
}
})
Ale wygląda na to, że regiony nie są dostępne dopiero po układ jest renderowany. Przed dodaniem widoków próbowałem wywoływać this.render()
, ale to nie działało. Jestem prawie pewien, że podstawowym problemem jest to, że stosuję układ w niewłaściwych okolicznościach.
Co powinienem robić w tej sytuacji? Kiedy jest właściwy czas na użycie Marionette.Layout
?
Dzięki!
Jeśli chodzi o '_.bindAll (this)' nadal jestem zdezorientowany, w jakich przypadkach należy go używać iw jakich przypadkach nie. – CodeRain
Dla większości metod wywoływanych bezpośrednio przez Marionetkę, takich jak procedury obsługi zdarzeń i 'onRender',' onClose', kontekst jest poprawnie ustawiony przez Marionetkę i nie potrzebujesz "bindAll". Jeśli ktoś inny wywołuje twoją metodę, powiedz wywołanie zwrotne jQuery z AJAX lub zdarzenie związane bezpośrednio za pomocą jquery, a chcesz, aby kontekst "to" nadal był widokiem, wtedy '_.bindAll (this, 'myfunc')' jest twoim przyjaciel. –
zapisał mój dzień :) – SAR