如何将.show()更改为.thoggle()而不复制函数中的项(如何重构)
How to change .show() to a .toggle() without duplicating items in my function(how can I refactor)
我目前正在使用我的第一个backbone.js应用程序。我做了一个"showcomment"函数,它在underscore.js模板中呈现一个视图,并将其呈现到我的视图中。问题是,我想在点击按钮时"切换"所有评论,而不仅仅是"显示"评论视图。如何重构这个"showComment"函数以不复制当前视图?success回调迭代注释视图中的每个注释,然后渲染它。使用toggle,我希望它在每次单击toggle时只渲染一个视图,而不是渲染同一个视图多次。
示例:
用户单击显示评论按钮,将显示5条评论。
用户点击显示评论按钮,评论被隐藏。
用户单击显示评论按钮,将显示10条评论(前5条,由于成功功能呈现了一个全新的视图,最初显示的前5个问题将附加到前5个,因此现在总共有10条)。
这是的主要功能
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
相关文章:
- jQuery:重构为函数
- 重构查找函数
- 将ECMAScript 6析构函数赋值(ES2015)重构为旧版本的javascript
- Javascript重构通常称为函数
- 将多个jQuery点击函数重构为一个函数
- 渲染重构会导致未定义的函数
- 如何将.show()更改为.thoggle()而不复制函数中的项(如何重构)
- ES2015中从函数到类的重构
- Javascript:重构循环之外的函数
- 重构作为属性从 es5 传递到 es6 的函数
- jQuery.queue() 与使用回调函数完成某事有何不同
- 将 PHP 函数的 3 小位重构为 JS - 数组,如果为空且匹配 url
- 使用用于在同一函数中命名函数的变量名称有何意义
- $scope函数参数从何而来
- 重构以避免 setTimeout 函数
- 在 JavaScript 中命名匿名函数有何不同
- 重构JavaScript原型构造函数中的重复代码
- 重构 Jquery 函数以使其可重用
- 重构C函数以查找O(n)中二进制树的直径到JavaScript
- 为什么可以't我在封闭函数之外重构这个匿名函数