我正在使用一个复合视图,它的 $.dialog 调用它是 $el。
然后复合视图列出集合中的项目。
现在我尝试了多种方法来呈现集合项:在将其附加到视图之前和之后从复合视图外部获取,在视图内部获取,从我的服务器脚本中预加载集合等...
一切似乎都有效,但出现同样的问题..
一旦复合视图看到这个集合,它就会再次调用它自己的初始化函数......
我完全理解将在集合重置或添加时调用渲染函数......但是初始化???我完全不知道为什么会这样。
showCustomFieldSelect: function(e){
log('triggered');
e.preventDefault();
var cl = new AustApp.Collections.CustomField;
var select = new AustApp.Views.AvailableCustomFieldsList({
el: "#available-custom-fields-popup",
collection: cl
});
cl.fetch();
cl.once("reset", function(){
// this bind was
// previously used for creating the view
// or calling render functions directly
// amongst numerous efforts to debug
}, this);
},
MyApp.Views.AvailableCustomFieldsList = function(){
var AvailableCustomFieldsList = Backbone.Marionette.CompositeView.extend({
template: "#available-contact-list-custom-field-list-js",
tag: "div",
itemView: AustApp.Views.AvailableCustomFieldsListItem,
emptyView: AustApp.Views.EmptyAvailableCustomFieldsListItem,
itemViewContainer: "ul",
templateHelpers: viewHelpers,
initialize: function(){
log('init called'); // called twice?????
this.render();
this.$el.dialog({
title: "Available Custom Fields",
width: '600px',
modal: true,
dialogClass: "round",
});
},
/* stuff */
});
return AvailableCustomFieldsList;
}();
任何帮助表示感谢,因为我很困惑