使用模板在Backbone View Vs上使用tagName和className属性

时间:2017-06-10 01:02:21

标签: javascript backbone.js

我有一个Backbone View,它使用Backbone Collection从api中提取数据:

var HousesView = Backbone.View.extend({
  initialize: function() {

    this.collection = new Houses();

    var that = this;
    this.collection.fetch({
      data: {
        pageSize: 50
      },
      success: function () {
        that.render();
      },
      error: function () {
        console.error('There was an error in fetch');
      }
    });
  },
  tagName: 'section',
  template: Handlebars.getTemplate('houses'),
  render: function() {
    this.$el.html(this.template({ houses : this.collection.toJSON() }));

    return this;
  }
});
然后,它从从api中提取的json创建模型,并将其作为集合传递给我的模板,该模板获取每个模型,并且例如将该模型的name属性作为列表输出。这很好。

我的问题是:因为我正在使用模板解析来自this.collection.toJSON()的数据tagName我在HouseView上设置似乎不会在html中输出。如果我使用View的模板,这是否意味着输出tagNameclassName等属性?

另外,理想情况下,我想为集合中的每个模型创建一个HouseView,然后在包装器HousesView中显示所有这些模型。

1 个答案:

答案 0 :(得分:0)

在您的示例中,您使用的是自定义渲染。在这种情况下,tagNameclassNameid的自动生成视图将被加标(在渲染函数中通过方法this.$el.html覆盖。)。

最好的方法就是你提到创建单独的视图并将其附加到主视图渲染到html中。