私はバックボーンに本当に慣れていないので、これを理解しようとあらゆる場所を調べました。基本的に、モデル、ビュー、コレクション、およびテンプレートがどのように連携するかを理解していますが、何らかの理由でコレクションをテンプレートでレンダリングすることができません。Firebug を使用すると、「this.model is undefined」というメッセージが表示されます
これが私のコードです:
(function($) {
window.Category = Backbone.Model.extend({});
window.Categories = Backbone.Collection.extend({
url: "src/api/index.php/categories?accounts_id=1",
model: Category
});
window.categories = new Categories();
categories.fetch();
window.CategoriesView = Backbone.View.extend({
initialize:function () {
_.bindAll(this,"render");
this.model.bind("reset", this.render);
},
template:_.template($('#tpl-category').html()),
render:function (eventName) {
$(this.el).html(this.template(this.model.toJSON()));
return this;
}
});
var testTargetvar = new CategoriesView({ el: $("#collection") });
})(jQuery) ;
これは、REST サービスが生成するデータです。
[
{
"name": "Web Design",
"id": 0
},
{
"name": "Web Development",
"id": 0
},
{
"name": "Waste Management Solutions",
"id": 0
}
]
私が使用している「フェッチ」は、フェッチされたデータを Firebug に表示します。
最後に、これが私のテンプレートです。
<div id="collection"></div>
<!-- Templates -->
<script type="text/template" id="tpl-category">
<span><%=name%></span>
</script>
必要なすべてのスクリプト、jquery、バックボーン、アンダースコアなどがページに正しく読み込まれていることを確認しました。