コレクションのレンダリングに問題があります...これをコンソールに追加すると、すべてが機能します:
$('body').append(tablesView.render().el);
json ファイルの li にすべての名前が表示されます。その後、次のことができます:
tablesCollection.create({ name:'Next Table Name' });
すぐにレンダリングされる次のオブジェクトを追加します。
私のコード:
window.App = {
Models: {},
Views: {},
Collections: {}
};
window.template = function (id) {
return _.template($('id' + id).html());
};
//============================ テーブルモデル
App.Models.Table = Backbone.Model.extend({
defaults: {
name: 'Table Name',
},
});
//====================== テーブルコレクション
App.Collections.Tables = Backbone.Collection.extend({
model: App.Models.Table,
url: 'tables.json'
});
//============== コレクションから各テーブルモデルを表示
App.Views.Tables = Backbone.View.extend({
tagName: 'ul',
initialize: function() {
this.collection.fetch({reset:true});
this.collection.on('reset', this.render);
this.collection.on('add', this.addOne, this );
},
render: function () {
this.collection.each(this.addOne, this);
return this;
},
addOne: function(table) {
var table = new App.Views.Table({ model: table });
this.$el.append( table.render().el );
table.render();
}
});
//============================= 1 つのテーブル モデルの表示
App.Views.Table = Backbone.View.extend({
tagName: 'li',
initialize: function() {
this.model.on('destroy', this.remove, this)
},
render: function () {
this.$el.html( this.model.get('name') );
return this;
},
});
//================ 新しいコレクションインスタンス
var tablesCollection = new App.Collections.Tables();
//======================== 新しいテーブル ビュー インスタンス
var tablesView = new App.Views.Tables({ collection: tablesCollection });
すべての回答に感謝します!!!! よろしくマクロマット