Tôi có một CompositeView Marionette với một bảng điều khiển tìm kiếm và tập hợp các dữ liệu kết quả.Sau khi Render sự kiện trên CompositeView với Backbone.Marionette
Tôi muốn gọi một hàm khi:
- bảng điều khiển tìm kiếm được trả lại.
- bộ sưu tập chưa được hiển thị.
- không nên gọi hàm này khi bộ sưu tập được hiển thị.
tôi đã làm nó theo cách này: (nhưng "afterRender" chức năng được gọi là hai lần)
// VIEW
App.MyComposite.View = Backbone.Marionette.CompositeView.extend({
// TEMPLATE
template: Handlebars.compile(templates.find('#composite-template').html()),
// ITEM VIEW
itemView: App.Item.View,
// ITEM VIEW CONTAINER
itemViewContainer: '#collection-block',
//INITIALIZE
initialize: function() {
this.bindTo(this,'render',this.afterRender);
},
afterRender: function() {
//THIS IS EXECUTED TWICE...
}
});
Làm thế nào tôi có thể làm điều này?
========================== EDIT =================== ===============
Tôi đã giải quyết nó theo cách này, nếu bạn có quan sát, hãy cho tôi biết.
// VIEW
App.MyComposite.View = Backbone.Marionette.CompositeView.extend({
//INITIALIZE
initialize: function() {
//this.bindTo(this,'render',this.afterRender);
this.firstRender = true;
},
onRender: function() {
if (firstRender) {
//DO STUFF HERE..............
this.firstRender = false;
}
}
});
Vui lòng cung cấp một số chi tiết vào sự liên kết sự kiện của bạn và khi reneder được gọi – schacki
Đó là trong hàm khởi tạo: "this.bindTo (điều này, 'render', this.afterRender) ". Tôi không chắc chắn nếu điều này là đúng, nhưng những gì tôi muốn làm là gọi "afterRender" chức năng một lần xem được trả lại –