Backbone.js with slim.php - 当我添加一个显示错误"未捕获的类型错误:对象 [对象对象] 没有方法'创建'"的新模型时。请帮助我将新模型添加到数据库中。
如果我使用这个.model.save()方法,它会显示500个内部服务器错误。在哪里使用用户创建()和保存()方法。我不清楚这一点。
谢谢。
// Models
window.Users = Backbone.Model.extend({
urlRoot:"./bb-api/users",
defaults:{
"name":"",
"email":"",
"designation":""
}
});
window.UsersCollection = Backbone.Collection.extend({
model:Users,
url:"./bb-api/users"
});
// Views
window.AddUserView = Backbone.View.extend({
template:_.template($('#new-user-tpl').html()),
initialize:function(){
this.model.bind("click", this.render, this);
},
render:function(){
$(this.el).html(this.template());
return this;
},
events:{
"click .add":"saveUser"
},
saveUser:function(){ //alert('saveUser');
this.model.set({
name:$("#name").val(),
email:$("#email").val(),
designation:$("#designation").val()
});
if(this.model.isNew()){
this.model.create(this.model);
}
}
});
// Router
var AppRouter = Backbone.Router.extend({
routes:{
"":"welcome",
"add":"addUser"
},
welcome:function(){
$('#content').html('Welcome to Backbone.js App');
},
addUser:function(){
this.addUserModel = new Users();
this.addUserView = new AddUserView({model:this.addUserModel});
$('#content').html(this.addUserView.render().el);
}
});
var app = new AppRouter();
Backbone.history.start();
if(this.model.isNew()){
this.model.create(this.model);
}
这段代码是错误的,因为Backbone.Model
中没有create
方法。您必须调用this.model.save()
才能将主干模型发送到您的服务器。
如果模型isNew
,则来自客户端的请求类型将为 create
。如果模型不是新的,则方法update
。
您可以(并且应该)在此处阅读有关数据同步方法的更多信息:http://backbonejs.org/#Sync。 Backbone.model.save
委托给模型的sync
方法,以进行实际的 AJAX 请求发送。如果未定义模型的sync
,则使用全局 Backbone.sync。