我已经定义了 aModel
和 a Collection
,并且由于我的数据库中已经有记录,我希望在页面加载时在应用程序中显示所有这些记录。
我尝试使用Backbone.sync
,但在 Chrome 调试模式下仍然看到一个空集合。
我的 Backbone.js 代码:
http://jsfiddle.net/GhaPF/15/ (由于模板依赖性,我不得不在那里删除一些代码)。
$(document).ready(function() {
var Item = Backbone.Model.extend({
defaults: { "date": "",
"text": "default text"
},
initialize: function() { // STEP 3
var dateString = giveMeDate();
this.set("date", dateString);
},
urlRoot : './items'
});
var ItemList = Backbone.Collection.extend({
model: Item,
url: './items/',
initialize: function() {
this.fetch();
}
});
//************ VIEW ********************************
var ItemListView1 = Backbone.View.extend({
el: 'body',
initialize: function(myitemList) {
this.itemlist = myitemList;
this.itemlist.bind('add', this.addOneItem, this);
this.render();
},
addOneItem: function() {
this.render();
},
render: function() { // STEP 5 this is called because add() is bound to this.render (in initialization of this View)
text = this.itemlist.toJSON();
string = JSON.stringify(text);
$("#view1").html('');
$.tmpl("itemTemplate", text).appendTo("#view1");
return this;
},
events: {
"keypress #new-item": "createOnEnter" // STEP 1
},
createOnEnter: function(e) {
if (e.keyCode != 13) return;
if (!$("#new-item").val()) return;
this.itemlist.create({"text": $("#new-item").val()}); // STEP 2
$("#new-item").val('');
}
});
$("#new-item").focus();
var itemlist = new ItemList();
Backbone.sync("read", itemlist);
var myitemListView = new ItemListView1(itemlist);
这是我在 Backbone.sync 之后在集合中看到的内容:
d
_byCid: Object
_byId: Object
length: 0
models: Array[0]
__proto__: x