$.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;
}();
私が困惑しているので、助けていただければ幸いです