如何删除/销毁附加到主体的主干视图
How to remove/destroy Backbone View which is appended to body
我有这个主干应用程序,点击事件会触发一个新的视图,并将其作为弹出窗口附加到DOM的主体。不过,我的问题是,当我在视图外部单击时,我希望新视图被完全删除。以下是触发新视图的事件:
view1.js:
events: {
'click .btn': 'popupView'
},
popupView: function(){
new popup.View().render();
}
然后代码到我的"弹出"视图:
popup.View = Backbone.View.extend({
template: 'some_template',
initialize: function(){
this.$el.appendTo("body");
this.render();
},
afterRender: function(){
$("body").click(function(){
$('div.wrap').remove(); // removes the wrap div from the html template
this.remove() // does not work
})
})
问题是,在弹出视图被渲染后,我一点击主体,它就会从DOM中删除包装div html,但当我再次打开弹出视图时,前一个html会被渲染两次等等。因此,这表明视图毕竟没有被删除/销毁。
有什么建议可以解决这个问题吗?谢谢
这是因为回调函数内部的this
上下文不同。试试看:
afterRender: function(){
var that = this;
$("body").click(function(){
$('div.wrap').remove();
that.remove(); // should work
})
让我知道这是否有效
相关文章:
- 如何使用javascript从主svg对象动态创建svg视图框
- 正在使用$location.path(.)路由ng视图
- angular.js没有'无法在PhoneGap中处理视图标记
- 如何包含特定于每个视图angularjs的javascript文件
- 通过在Dojo mobile ViewController.openExternalView中动态更改打开同一外部视图的
- Kendo:我该如何在树视图中创建一个递归的hieiarchy
- Ajax Live搜索发布到Laravel视图
- backbone.js无法渲染视图
- 根据某些条件在视图之间切换
- 主体上的addEventListener('mousemove',..)-有多糟糕
- ng视图外的链接重定向到ng视图内的页面
- 如何在Jquery中发布后将值从视图返回到控制器
- 将日期时间作为 JSON 发送将无法在我的视图中正确显示
- 使用Scala Play Framework视图中的键检索映射值
- FF视图源|脚本高亮显示为红色
- 如何使bxslider仅在移动视图中处于活动状态
- 为什么不't我的变量在我的控制器中填充后在我的视图中呈现
- 在不破坏未定义函数的情况下,对多个视图使用单个js文件
- 如何删除/销毁附加到主体的主干视图
- MVC视图文件_Layout.cshtml中头部和主体的Render Bundles之间的差异