这个。$ el.html与此。$ el.append

时间:2013-04-17 01:13:43

标签: javascript jquery backbone.js underscore.js

在渲染模板时,这个。$ el.html和this。$ el.append之间是否存在差异?我对js,骨干等全新。在我正在进行的当前项目中,我看到像

这样的东西
this.$el.append(Project.Templates["template-library"](this.model))
外视图中的

。在这种情况下,此模板用于模态视图。然后说模态视图在模态视图中显示每个项目的行。然后,对于每个行,模板都会像这样呈现:

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

这两者有什么区别吗?为什么在某些情况下应该使用append(),在另一种情况下使用html()

3 个答案:

答案 0 :(得分:3)

对我来说,这实际上取决于你如何使用你的观点'render方法。

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

或者,只要视图的元素需要以某种方式更改,您就可以设计render一次又一次地使用。 Backbone很好地支持这种风格,例如。 this.model.on('change', this.render, this);。对于这种风格,append会很烦人,因为你必须在append之前检查元素是否已经存在。相反,html更有意义,因为它消除了以前的所有内容。

答案 1 :(得分:1)

$el append会在$el中插入新元素,而html则会更改{{1}}的内容。

答案 2 :(得分:1)

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