如何防止backbone remove()删除"el"在一个视图中
How do I prevent backbone remove() from removing "el" in a view?
我想在创建一个新视图之前删除一个视图。但我的要求是view.remove()
应该删除视图,但不删除el
元素。话虽如此,我不想设置tagName
,因为它创建了一个不必要的新元素。是否有任何方法从内存中删除视图,使el
内容清除?
你可以在你的抽象视图中重写Backbone的view remove
方法:
remove: function() {
// this._removeElement();
this.$el.empty();
this.stopListening();
return this;
}
默认源代码:http://backbonejs.org/docs/backbone.html#section-158
我以前用一次性启动器视图解决了这个问题。
确保你的HTML包含一个(class或id)锚为你的一次性视图:<div class="content-container"></div>
然后创建一个LauncherView:
var LauncherView = Backbone.View.extend({
initialize: function(options) {
this.render();
},
render: function() {
this.$el.html(this.template());
return this;
},
// inner views will be bound to ".launcher-container" via
// their .el property passed into the options hash.
template: _.template('<div class="launcher-container"></div>')
});
然后实例化你的一次性启动器视图:
app.currentLauncherView = new LauncherView({});
并将其附加到DOM锚:$('.content-container').append(app.currentLauncherView.el);
,那么你可以实例化一个视图,它将附加到一次性启动器视图:app.throwAway1 = new DisposableView({el: '.launcher-container'});
然后当你想要销毁这个视图时,你可以这样做:
app.throwAway1.off();
app.throwAway1.remove();
app.currentLauncherView.remove();
然后你可以通过实例化一个新的LauncherView来创建一个新的视图,将它附加到DOM上,并通过将它绑定到'来使你的下一个视图出现。launcher-container"。
app.currentLauncherView = new LauncherView({});
$('.content-container').append(app.currentLauncherView.el);
app.throwAway2 = new DisposableView({el: '.launcher-container'});
相关文章:
- 尝试使用Javascript正则表达式来获取“&"分隔文本,无论它是否's是最后一个值
- jQuery"焦点”;在一个实例中有效,但在其他实例中无效
- 我如何选择/点击一个带有for=“”的元素"属性[量角器]
- 我收到一个类型错误,其中包含-"$不是函数“;使用noConflict时
- 我正在使用php includes来构建一个多页面网站.使用jquery,我将如何添加一个类"活动的”;添加到
- 获取"下一个“;对象中的数值
- 我怎样才能使一个类型=“;提交”;在css中看起来像一个type="按钮”;
- 为什么下面抛出一个“;对象没有't支持属性或方法'importNode'"在IE11中
- JQuery:如何强制选择一个选项为"选择“;,使用FancySelect插件
- 我想制作一个代码;a“;变成“;b”"b”;变成“;c”;,等等
- 你如何做一个sql"像“;在javascript中使用azuremobilesdk进行查询
- "npm运行构建“;模块解析错误”;您可能需要一个适当的加载程序来处理此文件类型&”;
- 说明Node.js项目:是否只有一个"服务器文件“;在node.js中
- jQuery"加载更多的帖子”;隐藏按钮如果最后一个帖子
- TypeError:undefined不是一个对象(正在评估'msg.innerHTML="Uploa
- 需要声明,但找到'"显示:无"'.跳过到下一个声明
- "下一个“;按钮并没有按预期循环浏览答案
- Javascript:如何确保"这个“;在一个对象内总是相同的
- window.open()添加一个rel="nofollow”;属性
- 如何找到原因AngularJS"自变量'MyCtrl'不是一个函数,未定义”;