2017-06-10 1 views
0

を使用してVsをバックボーンビューにはtagNameとclassNameのプロパティを使用:私は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; 
    } 
}); 

それはその後、JSONからのモデルは、APIから引き出さ作成これをコレクションとしてテンプレートに渡します。テンプレートは各モデルを取り込み、そのモデルの名前属性をリストとして出力します。それはうまく動作します。

私の質問は:私はHouseViewに設定tagName HTMLで出力されていないようですthis.collection.toJSON()からのデータを解析するために、テンプレートを使用していますので。ビューのテンプレートを使用している場合、tagName,classNameなどの平均プロパティは出力されませんか?

さらに、コレクションからモデルごとにHouseViewを作成し、すべてをラッパーHousesViewに表示することをお勧めします。

+2

ビューの 'el'をページに追加していますか?通常、 'some_element.append(house_view.render().el)'のようなことをします。 –

+0

[mcve]で 'HousesView'をどのように使っているか教えてください。 –

答えて

0

この例では、カスタムレンダリングを使用しています。その場合、tagName,classNameおよびidからの自動生成ビューがスパイクされます(レンダリング機能ではthis.$el.htmlで上書きされます)。

別のビューを作成してメインビューのレンダリングでhtmlに追加するのが最良の方法です。

関連する問題