2

我有一个像这样实例化的视图:

var myView = new BackboneView({ el: '#some-div'});

在视图渲染函数(我从构造函数调用)中,我想替换当前元素(我想将它包装到另一个 div 中,或者在它之前放置另一个元素并使新元素成为视图的主元素)。这个怎么做?我正在尝试这个:

this.original_el = this.$el;
this.$el.replaceWith('<div class="new-div"></div>');

一步一步调试我看到浏览器上的 div 被替换了,但是 this.$el 仍然是旧值。

另一方面,

    this.$el.setElement('<div class="new-div"></div>');

替换 this.$el,但新的 div 不会显示在浏览器上。有什么帮助吗?谢谢

4

1 回答 1

9

我在 GitHub上的 Backbone repo 上发现了一个问题。Backbone 不会自动为您执行此操作是有充分理由的,您可以在那里阅读。解决方案是两者都做,$el在 DOM 中替换并更新 Backbone 视图。在您的视图方法中:

this.$el.replaceWith(newElement)
this.setElement(newElement)
于 2014-09-25T23:21:15.690 回答