Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何将.show()更改为.toggle(),而不复制函数中的项(如何重构)_Javascript_Jquery_Backbone.js - Fatal编程技术网

Javascript 如何将.show()更改为.toggle(),而不复制函数中的项(如何重构)

Javascript 如何将.show()更改为.toggle(),而不复制函数中的项(如何重构),javascript,jquery,backbone.js,Javascript,Jquery,Backbone.js,我目前正在使用我的第一个backbone.js应用程序。我制作了一个“showcoment”函数,它在underline.js模板中呈现一个视图,并将其呈现到我的视图中。问题是,我想在单击按钮时“切换”所有注释,而不仅仅是“显示”注释视图。如何重构此“showcoment”函数以不复制当前视图?成功回调将迭代comment视图中的每个注释,然后呈现它。使用切换,我希望它只渲染一个视图,而不是渲染同一个视图,每次单击时多次单击切换 例如: 用户单击“显示注释”按钮,将显示5条注释 用户单击“显示注

我目前正在使用我的第一个backbone.js应用程序。我制作了一个“showcoment”函数,它在underline.js模板中呈现一个视图,并将其呈现到我的视图中。问题是,我想在单击按钮时“切换”所有注释,而不仅仅是“显示”注释视图。如何重构此“showcoment”函数以不复制当前视图?成功回调将迭代comment视图中的每个注释,然后呈现它。使用切换,我希望它只渲染一个视图,而不是渲染同一个视图,每次单击时多次单击切换

例如:

用户单击“显示注释”按钮,将显示5条注释

用户单击“显示注释”按钮,注释将隐藏

用户单击ShowComments按钮,将显示10条注释(前5条注释,由于success函数呈现一个全新的视图,最初显示的前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