Ho il seguente modello ItemView
che è pieno di dati del cliente (firstName, lastName) e voglio aggiungere un CollectionView
nel div .addresses
.Marionette.js ItemView - Put child view nella regione
Template
<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>
layout
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));
}
});
sto ottenendo l'errore "non rilevate TypeError: .addresses oggetto non ha metodo 'show'."
Devo aspettare fino a quando viene caricato la vista?
Questo sembra buono :) Posso utilizzare il CompositeView se voglio visualizzare due raccolte al di sotto dei dati del cliente (una per gli indirizzi e una per i contatti) o dovrei usare un layout allora? – Dennis
@Dennis - utilizzare a Layout per quel –
per la versione attuale che è 3.0, l'itemView e itemViewContainer in CompsoiteView, dovrebbe essere childView e childViewContainer. rinominare "elemento" in "figlio". http://marionettejs.com/docs/v2.4.7/marionette.compositeview.html#compositeviews-childview –