バックボーンで最初のアプリを構築しています。複数のレベルでjsonを解析するのに最適なモードを知りたいです。これは、json の簡単な小さな例です。
{
"hotels":[
{
"hotel" : [
{
"name" : "Hotel1"
}
]
},
{
"hotel" : [
{
"name" : "Hotel2"
}
]
},
{
"hotel" : [
{
"name" : "Hotel3"
}
]
}
]
}
それを印刷するには、次のようにバックボーンでコレクションとビューを使用しています:
var HotelsCollection = Backbone.Collection.extend({
model: Hotel,
url: "includes/test-data.json",
parse : function(response){
return response.hotels;
}
});
これはビューと呼ばれる 2 つのビューです。これは、すべてのホテルで異なるビューが必要なためです。
var AppView = Backbone.View.extend({
initialize: function(){
this.collection = new HotelsCollection();
this.collection.bind('sync', this.render, this);
this.collection.fetch();
},
render: function(){
console.log('Data is fetched');
var element = this.$el;
element.html('');
this.collection.each(function(model){
console.log('new hotel');
var hotelView = new HotelView({model:model});
element.append(hotelView.el);
});
}
});
var HotelView = Backbone.View.extend({
template: _.template($("#hotel-list-template").html()),
initialize: function(){
console.log('HotelView initialized');
this.render();
},
render: function(){
console.log('HotelView render');
$(this.el).html(this.template({model: this.options.model}));
}
});
私のテンプレートは次のとおりです。
<script type="text/template" id="hotel-list-template">
<div>
<h1>TEMPLATE HOTEL funziona?
<% _.each(hotel, function(acs) { %>
<a class="btn"><%= name %></a>
<% }); %>
</h1>
</div>
</script>
しかし、私も試した名前を出力しません:
<script type="text/template" id="hotel-list-template">
<div>
<h1>TEMPLATE HOTEL funziona
<a class="btn"><%= hotel.name %></a>
</h1>
</div>
</script>
しかし、値の名前を出力できません。どうすればよいですか? ありがとう