在渲染模板时,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()。
发布于 2013-04-17 11:00:32
对我来说,这实际上取决于如何使用视图的render方法。
有些人喜欢将render用作initialize的扩展,因为他们只在视图第一次出现在页面上时使用它一次,并且经常从initialize调用它。使用这种样式,您可以安全地使用append,而不必担心意外添加两次元素,因为渲染不会运行两次。
或者,您可以将render设计为在视图元素需要以某种方式更改时反复使用。Backbone很好地支持这种风格,例如。this.model.on('change', this.render, this);。对于这种风格,append会很烦人,因为在append-ing元素之前,您必须不断地检查元素是否已经存在。相反,html更有意义,因为它清除了以前存在的所有内容。
发布于 2013-04-17 09:15:46
使用append时,一个新元素将被插入到$el中,而html将更改$el的内容。
发布于 2015-02-05 14:00:52
使用.append()将允许您向已存在的对象添加或附加某些内容。而不是使用.html(),它会将整个对象更改为新的对象。
https://stackoverflow.com/questions/16049802
复制相似问题