Javascript 如何将.show()更改为.toggle(),而不复制函数中的项(如何重构)
我目前正在使用我的第一个backbone.js应用程序。我制作了一个“showcoment”函数,它在underline.js模板中呈现一个视图,并将其呈现到我的视图中。问题是,我想在单击按钮时“切换”所有注释,而不仅仅是“显示”注释视图。如何重构此“showcoment”函数以不复制当前视图?成功回调将迭代comment视图中的每个注释,然后呈现它。使用切换,我希望它只渲染一个视图,而不是渲染同一个视图,每次单击时多次单击切换 例如: 用户单击“显示注释”按钮,将显示5条注释 用户单击“显示注释”按钮,注释将隐藏 用户单击ShowComments按钮,将显示10条注释(前5条注释,由于success函数呈现一个全新的视图,最初显示的前5条问题将附加到前5条注释中,因此现在总共有10条注释) 这里是主要功能Javascript 如何将.show()更改为.toggle(),而不复制函数中的项(如何重构),javascript,jquery,backbone.js,Javascript,Jquery,Backbone.js,我目前正在使用我的第一个backbone.js应用程序。我制作了一个“showcoment”函数,它在underline.js模板中呈现一个视图,并将其呈现到我的视图中。问题是,我想在单击按钮时“切换”所有注释,而不仅仅是“显示”注释视图。如何重构此“showcoment”函数以不复制当前视图?成功回调将迭代comment视图中的每个注释,然后呈现它。使用切换,我希望它只渲染一个视图,而不是渲染同一个视图,每次单击时多次单击切换 例如: 用户单击“显示注释”按钮,将显示5条注释 用户单击“显示注
showComments: function() {
this.commentsView = this.$el.find(".comments_container");
this.commentsView.show(); ***INSTEAD OF .show() I CAN USE .TOGGLE() but I get DUPLICATES WHENEVER THE VIEW IS RENDERED ***
this.commentCollection = new app.CommentList();
// // debugger;
var self = this;
this.commentCollection.fetch({
data: { question_id: this.$el.attr('question_id') },
success: function(collection) {
collection.each(function(comment) {
var commentView = new app.CommentView({model: comment});
var html = commentView.render().el;
self.commentsView.append(html);
});
}
});
以下是主干事件:
'click .show_comments': 'showComments'
如有任何建议,将不胜感激,谢谢 有几种方法可以做到这一点 您可以在页面加载时呈现和隐藏注释视图,然后绑定按钮commentsView.toggle 或者在showComments函数中,您可以进行评估,检查commentsView是否已创建
If (this.commentView != null)
//toggle
else
//create your view and show it