Mam następujący szablon ItemView
, który jest wypełniony danymi klienta (firstName, lastName) i chcę dodać CollectionView
do div .addresses
.Marionette.js ItemView - Umieść widok dziecka w regionie
Szablon
<script type="text/html" id="template-customer-details">
<h4><%= firstName %> <%= lastName %></h4>
<button class="edit">Edit</button>
<h5>Addresses</h5>
<div class="addresses">...</div>
</script>
Układ
Layout.Details = Backbone.Marionette.ItemView.extend({
template: '#template-customer-details',
regions: {
addresses: ".addresses"
},
serializeData: function() {
return this.model.attributes;
},
initialize: function() {
this.addressList = new App.Models.AddressList();
// Error!
this.regions.addresses.show(this.addressList);
this.bindTo(this, "render", this.$el.refresh, this.$el);
this.model.bind("change", this.render.bind(this));
}
});
otrzymuję błąd "Uncaught TypeError: .addresses obiektu ma metodę 'show'."
Czy muszę czekać na załadowanie widoku?
To wygląda dobrze :) Czy mogę też użyć CompositeView, jeśli chcę wyświetlić dwie kolekcje poniżej danych klienta (jedna dla adresów i jedna dla kontaktów), czy też powinienem użyć Układu? – Dennis
@Dennis - użyj w Layout dla tego –
Dla bieżącej wersji, która jest 3.0, itemView i itemViewContainer w CompsoiteView, powinny być childView i childViewContainer. zmień nazwę "przedmiotu" na "dziecko". http://marionettejs.com/docs/v2.4.7/marionette.compositeview.html#compositeviews-childview –