我正在尝试使用以下代码将视图附加到Backbone中的项目:
var viewContainer = this.$el.find('.view-container'),
pageWrap = this.$el.nextAll();
FIX if(viewContainer.empty()){
this.myView= new ProductsView();
viewContainer.append(application.myView.render().$el),
console.log(myView);
}
我使用viewContainer
功能将此视图附加到toggle
,但是,每次点击按钮时,myView
会一次又一次地附加到viewContainer
而不是只有一次。在附加视图之前,如何检查视图是否已在其中呈现?我可以使用!this.rendered()
等价物吗?
我发现了这个thread,但在这种情况下它没有帮助我。
UPDATE - 来自console.log(viewContainer)
[div.view-container.product-container.active, div#subjects_menu.view-container.product-container.hidden.active, prevObject: p.fn.p.init[1], context: undefined, selector: ".view-container"]
答案 0 :(得分:0)
从它的外观来看,你想确保ProductsView
如果已经存在则不会被创建。
最简单的方法是:
if(!this.myView) {
this.myView= new ProductsView();
viewContainer.append(application.myView.render().$el),
}
最好使用应用程序状态而不是查询DOM。删除产品视图后,只需执行this.myView = null
。
您唯一想要查询DOM以了解视图是否已呈现的时间可能是您必须集成一个隔离的外部应用程序,在该应用程序中,您无法控制,在触摸时不会触发任何事件/提供回调等