javascript - backbone remove view 删除 el

标签 javascript jquery backbone.js backbone-views

我正在创建一个单页应用程序,我对 Backbone 还很陌生。我在创建多个使用相同 wrapper-div 的 View 时遇到问题。

我的设置:

我已经为所有 View 添加了关闭功能:

Backbone.View.prototype.close = function(){
    this.remove();
    this.off();
    if (this.onClose){
        this.onClose();
    } 
}

我有一个 wrapper-div,我想在其中渲染 View 、删除它们并渲染新 View 。所以我的 SetupView 看起来像这样:

app.SetupView = Backbone.View.extend({
    el: '#my_view_wrapper',
    ...
});

在我交换 View 的函数中,我像这样关闭当前(打开的) View :

var v = this.model.get('view');
v.close();

问题

我的问题是我有多个 View 使用同一个 wrapper-div。但是当我关闭一个 View 时,这个 wrapper-div 似乎被删除了,我尝试创建的下一个 View 找不到这个 div。

我想有一个简单的解决方案吗?我想重复使用相同的包装器,并且只删除其中的 View ,而不是包装器本身。

最佳答案

作为补充(供以后引用):另一种选择是覆盖 subview remove 以便它只是清空 $el 而不是删除它。例如。

remove: function() {
      this.$el.empty().off(); /* off to unbind the events */
      this.stopListening();
      return this;
}

我个人更喜欢这个,因为它不需要插入没有实际用途的包装元素。

关于javascript - backbone remove view 删除 el,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14083724/

相关文章:

javascript - 使用 node.js : Error: failed to connect to [localhost:27017] 设置 MongoDB

javascript - Gulp-uglify 包装 JS

javascript - div 不会在图像悬停时显示

javascript - 主干事件触发两次

javascript - 哪个 JQuery document.ready 更好?

jquery - .then .done promise 不会使用 knockout 和 js 在 durandal spa 中工作

javascript - Backbone 应用组织

javascript - 为什么未分配的 Vue 实例不会被垃圾回收?

javascript - 如何修复加载不以 Angular 显示的问题

php - Ajax 并返回由 PHP GD 创建的图像