我想用backbone.js做一个基本的CRUD应用程序。所以我想从服务器列出一些东西,创建和编辑它们。backbone.js的哪些组件应该与服务器通信?
这是我的理解这一点:
我的两个Model
和Collection
包含URL。该集合将获取数据,模型将创建/保存()数据。
View
处理所有的交互,例如调用collection.fetch或model.save,然后在成功之后将模型添加到集合中。
模型和集合的url属性看起来像重复的代码给我。这是做服务器交互的正确方法吗?
这是我做我的结构,以供参考:
window.User = Backbone.Model.extend({
initialize: function() {
},
defaults:
{
Name: '',
Age: 0,
Items: []
}
});
window.UserList = Backbone.Collection.extend({
model: User,
url: "/Users"
});
window.UserView = Backbone.View.extend({
el: 'body',
collection: new window.UserList,
template: _.template($('#user-view-template').html()),
events: { "submit form#newUser": "addItem" },
initialize: function() {
_.bindAll(this, 'render', 'update', 'addItem');
this.collection.bind('refresh', this.render);
this.collection.bind('change', this.render);
this.update();
},
render: function() {
$("#sup").html(this.template({ users: this.collection.toJSON() }));
return this;
},
update: function() {
this.collection.fetch();
},
addItem: function (e) {
e.preventDefault();
var person_attrs = $(e.target).serializeObject();
this.collection.create(person_attrs, {
success: function (saved_person, data) {
if (data.Result == "Success") {
alert("success");
}
else {
alert(data.Message);
}
},
error: function (aborted_person, response) {
alert("Server Error");
}
});
return false;
}
});
window.View = new window.UserView;
您能告诉我您是如何将模型分配给您的集合的,因此当您创建新模型时,它知道集合的URL ?我会发布我的代码。 –
嘿@Lol编码器,我在最后扩展了答案。希望对你有帮助! – 34m0