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

我的设置:

我向所有 View 添加了关闭功能:

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

我有一个wrapper-div,我想在其中渲染 View ,删除 View 并渲染新 View 。所以我的SetupView看起来像这样:
app.SetupView = Backbone.View.extend({
    el: '#my_view_wrapper',
    ...
});

从交换 View 的函数中,关闭当前(打开) View ,如下所示:
var v = this.model.get('view');
v.close();

问题

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

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

最佳答案

在您的方案中,不要将现有的DOM元素用作“el”值。 Backbone 将为您创建元素。实例化 View 时,可以执行以下操作将其附加到现有的包装元素上。

$(viewName.render().el).appendTo('#my_view_wrapper');

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

10-10 18:40
查看更多