4

渲染模板时 this.$el.html 和 this.$el.append 有区别吗?我对 js、backbone 等完全陌生。在我正在进行的当前项目中,我看到了类似的东西

this.$el.append(Project.Templates["template-library"](this.model))

在外观上。在这种情况下,此模板用于模态视图。然后说模态视图中的每个项目都有一行显示在模态视图中。然后对于这些行中的每一行,模板将呈现如下:

this.$el.html(this.template({ libraries: libraries.toJSON() }));

两者有什么区别吗?以及为什么append()应该在某些情况下使用,而html()在其他情况下使用。

4

3 回答 3

3

对我来说,这真的归结为你如何使用你的观点的render方法。

有些人喜欢将其render用作 的扩展initialize,因为他们只使用一次,当视图第一次出现在页面上时,并且经常从initialize. 使用这种样式,您可以安全地使用append,而不必担心意外添加元素两次,因为渲染不会运行两次。

或者,当视图的元素需要以某种方式更改时,您可以设计render为一遍又一遍地使用。Backbone 很好地支持这种风格,例如。this.model.on('change', this.render, this);. 对于这种风格,append会很烦人,因为您必须经常检查元素是否已经存在,然后才能使用append它们。相反html,它更有意义,因为它消除了之前存在的任何东西。

于 2013-04-17T03:00:32.267 回答
1

使用.append()将允许您向现有对象添加或附加某些内容。而是使用.html(),它将整个对象更改为新对象。

于 2015-02-05T06:00:51.537 回答
1

使用append会在 中插入一个新元素$el,而html会更改$el.

于 2013-04-17T01:15:45.883 回答