컴포지트보기의 Composite View documentation에 따르면 reset
, remove
및 add
이벤트가 이미 컬렉션에 바인딩되어 있습니다.컴포지트보기가 바인딩되는 초기 이벤트
왜 CompositeView 렌더링을 위해 reset
이벤트를 바인드해야합니까?
PS :
나는 Backbone.Marionette v0.9.1
더 세부 사항 (1)의 코드를 참조하십시오 사용하고 (2)
사실 문제는 serializeData, 에 관한 기능이 initialEvents
변수 has_message에서 호출 렌더링 할 때 때문에 0으로 설정됩니다. 따라서 ul.messages
은 템플릿에 정의되어 있지 않습니다. 어떻게 수정해야합니까?
(1)
var CompositeView = Marionette.CompositeView.extend({
template: CompositeTemplate,
itemView: messageView,
initialize: function() {
this.collection = new MessageCollection();
this.collection.fetch();
this.bindTo(this.collection, 'reset', this.render);
// deleting the previous line
// I cannot see the collection rendered after the fetch.
},
serializeData: function() {
return {
has_messages: this.collection.length > 0
};
},
appendHtml: function (collectionView, itemView) {
collectionView.$el.find('ul.messages').append(itemView.el);
}
});
복합보기 컬렉션에 리셋 이벤트를 결합하기 때문에 (2)
// Template
{{#if has_messages }}
<!-- list messages -->
<ul class="list messages"></ul>
{{else}}
no messages
{{/if}}