gpt4 book ai didi

jquery - Backbone Marionette,复合 View 初始化两次

转载 作者:行者123 更新时间:2023-12-03 22:28:40 25 4
gpt4 key购买 nike

我正在使用一个复合 View ,它的 $el 上调用了 $.dialog。

然后,复合 View 会列出集合中的项目。

现在我尝试了多种方法来呈现集合项:在将其附加到 View 之前和之后从复合 View 外部获取、在 View 内部获取、从我的服务器脚本预加载集合等...

一切似乎都有效,但出现了同样的问题..

一旦复合 View 看到这个集合,它就会再次调用它自己的初始化函数...

我完全理解渲染函数将在集合重置或添加时被调用...但是初始化???我完全不知道为什么会发生这种情况。

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;
}();

感谢任何帮助,因为我很困惑

最佳答案

对我来说,这个问题已经解决了(在我把头撞在 table 上几个小时之后),但要确保 ItemViewCompositeView< 之前声明/!!

作品:

MyItemView = Marionette.ItemView.extend({ /* STUFF */ })
MyCompView = Marionette.CompositeView.extend({ itemView: MyItemView })

不起作用(init 在没有任何参数的情况下调用了两次):

MyCompView = Marionette.CompositeView.extend({ itemView: MyItemView })
MyItemView = Marionette.ItemView.extend({ /* STUFF */ })

即使我们在声明两者之后获得 MyCompView 的实例也没关系,itemView 必须在 compsite view 之前声明。

关于jquery - Backbone Marionette,复合 View 初始化两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15017504/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com