在渲染模板时,这个。$ 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()
。
答案 0 :(得分:3)
对我来说,这实际上取决于你如何使用你的观点'render
方法。
有些人喜欢使用render
作为initialize
的扩展名,因为当视图首次出现在页面上时,他们只使用一次,并且经常从initialize
调用它。使用此样式,您可以安全地使用append
而无需担心意外添加元素两次,因为渲染不会运行两次。
或者,只要视图的元素需要以某种方式更改,您就可以设计render
一次又一次地使用。 Backbone很好地支持这种风格,例如。 this.model.on('change', this.render, this);
。对于这种风格,append
会很烦人,因为你必须在append
之前检查元素是否已经存在。相反,html
更有意义,因为它消除了以前的所有内容。
答案 1 :(得分:1)
答案 2 :(得分:1)
使用.append()
将允许您向现有对象添加或附加内容。而是使用.html()
,它会将整个对象更改为新对象。