私はバックボーンの初心者なので、これは単純なテンプレートをレンダリングする非常に単純な例です。このテンプレートのレンダリングに問題があります。Chrome でのみ動作します。「this.collection.fetch()」の後にこのコードをデバッグすると、MasterView オブジェクトは空ですが、Chrome にはコレクションがあります。Chrome では機能するのに、他のブラウザーでは機能しない理由はわかりません。
index.html
<div class="Presentation">
</div>
<script id="slideTemplate" type="text/template">
<h1><%=slide_title %></h1>
<h2><%=slide_subheading %></h2>
<div> <%=content %> </div>
</script>
モデル
define(['backbone','underscore'],function(Backbone,_){
var linkModel = Backbone.Model.extend({
defaults: {
slide_title: "slide",
slide_subheading: "sub slide 1",
content: "bla bla bla"
}
});
return linkModel;
});
コレクション
define(['backbone','underscore','models/link','libs/backbone-localstorage'],function(Backbone,_,link,storage){
var linkModels = Backbone.Collection.extend({
model: link,
localStorage: new storage('links')
});
return linkModels;
});
シングルビュー
define(['jquery','backbone','underscore'],function($,Backbone,_){
var linkView = Backbone.View.extend({
tagName: "article",
className: "slide-container",
template: $("#slideTemplate").html(),
render: function(){
var tmpl = _.template(this.template);
this.$el.html(tmpl(this.model.toJSON()));
return this;
}
});
return linkView;
});
マスタービュー
define(['jquery',
'backbone',
'underscore',
'collections/links',
'views/linkView', 'views/data'], function($, Backbone,_,links,linksView,data){
var favsView = Backbone.View.extend({
el: $(".Presentation"),
initialize: function(){
var self = this;
this.collection = new links(slides);
_.bindAll(this, 'renderLink', 'renderAll');
this.collection.fetch();
this.renderAll();
},
renderAll: function(){
this.collection.each(
this.renderLink
);
},
renderLink: function(model){
var view = new linksView({model: model});
this.$el.append(view.render().el);
model.save();
},
render: function(){
console.log("Ready...");
}
});
return new favsView;
});