0

我用以下方法清理内容视图的 div:

$(".box2").empty(); 

之后,它呈现下一个视图(不删除模型)。如果最后一个视图有很多内容,当加载下一个视图时,最后一个视图的残留物会显示一段时间。
如何解决这个问题?

代码:

    var Contents = Backbone.View.extend({
        el: "body", 
        events: {
            "click .addAll": "addContentAll", "click .addFront": "addContentChart"    
        },
        initialize: function() {
            _.bindAll(this); 
            this.model = new ContentCollection();
            this.model.on("add", this.contentAdded);
        },          
        addContentAll: function(event) {
                    this.model.add({name: "all"});  
                    //some content or plugin
        },  
        addContentChart: function(event) {
                    this.model.add({name: "chart"});
                    //charts content
        },         
        contentAdded: function(content) {
            if (content.view == null) {
                var template_name;              
                switch(content.get("name")){        
                    case 'all': template_name = 'all'; break; 
                    case 'chart': template_name = 'chart'; break;  
                }                                       
                content.view = new ContentView({model: content,template: $.trim($("[data-template-name='"+ template_name +"'] div").html() || "Template not found!")});
                $(".box2").empty(); 
                this.$el.find(".content").find("div.box2").append(content.view.render().el);                                                 
            }       
        }   
   });
var ContentView = Backbone.View.extend({
            tagName: "div",
            template: null,
            initialize: function() {
                _.bindAll(this);
                this.template = this.options.template; 
            },
            render: function() {        
                this.$el.html(Mustache.render(this.template, this.model.toJSON())); 
                return this; 
            }
 });     
 var view = new Contents();

empty()内容呈现后。有什么方法可以检查empty()函数何时生成?我认为它返回无效。这将是使用加载指示器然后渲染视图的好方法。

已解决:冲突在另一个内容插件中。

4

1 回答 1

1

这不是您清除 div 问题的直接答案,但您是否测试过是否可以通过在同一位置创建另一个来获得更快的性能(即 <div id="imHidden"></div><div id= "imVisible"></div>),在它仍然隐藏的时候填充它,然后在两个div的每一个上切换隐藏/显示状态?

如果这是您必须经常在 UI 中执行的操作,您甚至可能需要在两个 div 之间来回切换。一个可见,一个不可见,填充或清空 div 的任何操作仅发生在当前隐藏的任何一个上。

于 2013-01-22T13:55:19.613 回答