Tôi có mẫu ItemView
sau đây được điền dữ liệu khách hàng (firstName, lastName) và tôi muốn thêm CollectionView
vào div .addresses
.Marionette.js ItemView - Đặt chế độ xem con trong khu vực
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));
}
});
Tôi nhận được thông báo lỗi "của router Lỗi Loại: .addresses Object không có phương pháp 'show'."
Tôi có phải đợi cho đến khi chế độ xem được tải không?
Điều này có vẻ tốt :) Tôi cũng có thể sử dụng CompositeView nếu tôi muốn hiển thị hai bộ sưu tập bên dưới dữ liệu khách hàng (một cho địa chỉ và một cho địa chỉ liên hệ) hoặc tôi nên sử dụng một bố cục sau đó? – Dennis
@ Dennis - sử dụng tại Bố cục cho rằng –
Đối với phiên bản hiện tại là 3.0, mục itemView và itemViewContainer trong CompsoiteView, phải là childView và childViewContainer. đổi tên 'item' thành 'child'. http://marionettejs.com/docs/v2.4.7/marionette.compositeview.html#compositeviews-childview –