我是 Backbone 的新手,从 Todos 示例开始。之后,我为 Contacts 而不是 Todos 创建了该示例的新版本,它使用 Ruby on Rails Web 应用程序,并且它使用关联的 REST API 而不是 localstorage 来实现持久性。进行修改后,我能够成功地让 Backbone 应用程序更新 Rails 应用程序,但我无法让 Backbone 视图呈现 Backbone 应用程序从 Rails REST API 接收的数据。我已经通过调试器中的代码,可以看到:
- 调用函数来填充视图的事件被绑定到模型集合
- 当我获取模型数据时,集合正在使用来自服务器的数据进行更新
- 但是,绑定到集合的重置事件不会触发
谁能指出我可能导致重置事件不触发的原因?我的代码如下:
收藏:
var ContactsList = Backbone.Collection.extend({
model: Contact,
url: 'http://localhost:3000/contacts.json',
});
var Contacts = new ContactsList;
应用视图:
var AppView = Backbone.View.extend({
el: $("#contactapp"),
events: {
"keypress #new-contact": "createOnEnter"
},
initialize: function() {
this.input = this.$("#new-contact");
Contacts.bind('add', this.addOne, this);
Contacts.bind('reset', this.addAll, this);
Contacts.bind('all', this.render, this);
Contacts.fetch();
},
addOne: function(contact) {
var view = new ContactView({model: contact});
this.$("#contact-list").append(view.render().el);
},
addAll: function() {
Contacts.each(this.addOne);
},
createOnEnter: function(e) {
if (e.keyCode != 13) return;
if (!this.input.val()) return;
Contacts.create({first_name: this.input.val()});
this.input.val('');
},
});
var App = new AppView;