我用以下方法清理内容视图的 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()
函数何时生成?我认为它返回无效。这将是使用加载指示器然后渲染视图的好方法。
已解决:冲突在另一个内容插件中。