backbone.jsを使用するのはこれが初めてです。私はjson文字列を取得して、自分が持っているテンプレートを解析して入力しようとしています。
JSON:
[
{
"nav":{
"feel":"Feel Well",
"eat":"Eat Well",
"move":"Move Well",
"work":"Work Well",
"sleep":"Sleep Well",
"play":"Play Well"
}
}
]
コード:
//collection
WH.ApplicationCollection = Backbone.Collection.extend({
defaults: {
model: WH.ApplicationModel
},
model: WH.ApplicationModel,
url: 'json/test.json'
});
// View
WH.applicationView = Backbone.View.extend({
el: 'body',
template: _.template($('#header-template').html()),
initialize: function(){
this.collection = new WH.ApplicationCollection();
this.collection.bind("reset", this.render, this);
this.collection.fetch();
},
render: function(){
console.log(this.collection.toJSON());
$(this.el).html(this.template(this.collection.toJSON));
return this;
}
});
マークアップ:
<script id="header-template" type="text/template">
<div id="header">
<ul id="navigation">
<li id="logo"><a data-target="home" data-index="0" href="#/home"><h1></h1></a></li>
<% _.each(nav, function(navitem){ %>
<li><a data-target="<%= navitem %>" data-index="1" href="#/<%= navitem %>">Feel Well</a></li>
<% }); %>
</ul>
</div>
</script>
console.logは、JSON文字列が読み取られていることを示しています。しかし、実際のテンプレートに関しては。それは私にエラーを与えます:
Uncaught ReferenceError:navが定義されていません
これはマークアップからです。