Javascript 通过主干将数据发布到RESTful
首次尝试使用主干的模型集合将数据从主干发布到RESTJavascript 通过主干将数据发布到RESTful,javascript,rest,backbone.js,Javascript,Rest,Backbone.js,首次尝试使用主干的模型集合将数据从主干发布到REST define(["underscore" , "backbone"],function(_ , Backbone){ var CustomerModel = Backbone.Model.extend({ urlRoot: 'http://myresturl/api/CusWeb', initialize: function(){ }, defaults : { UID: "0000000
define(["underscore" , "backbone"],function(_ , Backbone){
var CustomerModel = Backbone.Model.extend({
urlRoot: 'http://myresturl/api/CusWeb',
initialize: function(){
},
defaults : {
UID: "00000000-0000-0000-0000-000000000000",
Sex: 0,
Name: "",
Company: "",
Address: "",
Email: ""
}
});
return CustomerModel;
});
define(["underscore","backbone","models/CustomerModel"] , function(_ ,Backbone,CustomerModel){
var CustomerCollection = Backbone.Collection.extend({
url: 'http://myresturl/api/CusWeb',
model:CustomerModel
});
return CustomerCollection;
});
我试图通过点击主干视图中的按钮将数据从主干发布到RESTURL
define(["jquery" ,
"underscore" ,
"backbone" ,
"text!templates/Customer/registerCustomerTemplate.html",
"models/CustomerModel",
"user",
],function($ , _ , Backbone, RegisterDescriptionTem, CustomerModel, Customer){
var userObj = new Customer();
var ContainerRegisterView = Backbone.View.extend({
el : $("#webbodycontainer"),
initialize : function(){
},
events : {
'click #register' : 'registerUser'
},
registerUser : function(){
this.model.set({
UID: "00000000-0000-0000-0000-000000000000",
Sex: 1,
Name: "",
Company: "",
Address: "",
Email: ""
});
this.model.save();
console.log(this.model.get('Sex'));
},
render : function(){
var _registerDes = _.template(RegisterDescriptionTem);
this.model = new CustomerModel();
this.$el.append(_registerDes((this.model.toJSON())));
}
});
return ContainerRegisterView;
});
console.log(this.model.get('Sex')代码>显示在浏览器控制台(1)中,但数据未保存到数据库
这是路由器:
define([
.....
'views/Customer/ContainerRegister',
], function(ContainerRegister){
var AppRouter = Backbone.Router.extend({
routes: {
......
}
var app_router = new AppRouter;
app_router.on('route:registerAction', function(register){
if(window.currentSection){
window.currentSection.remove();
}
window.currentSection = new ContainerRegister({});
$('#webbodycontainer').html(window.currentSection.$el);
window.currentSection.render(register);
});
});
我很感激你能提供的任何其他信息。谢谢。检查初始化模型。保存时,请尝试将第一个参数设为null。
define(["jquery" ,
"underscore" ,
"backbone" ,
"text!templates/Customer/registerCustomerTemplate.html",
"models/CustomerModel",
"user",
],function($ , _ , Backbone, RegisterDescriptionTem, CustomerModel, Customer){
var ContainerRegisterView = Backbone.View.extend({
el : $("#webbodycontainer"),
//check initializing your model here.
initialize : function(){
_.bindAll(this);
this.model = new Customer();
},
events : {
'click #register' : 'registerUser'
},
registerUser : function(){
this.model.set({
UID: "00000000-0000-0000-0000-000000000000",
Sex: 1,
Name: "",
Company: "",
Address: "",
Email: ""
});
this.model.save(null,{
success:function(){
//code after success
},error:function(){
//code after error
},
});
console.log(this.model.get('Sex'));
},
render : function(){
var _registerDes = _.template(RegisterDescriptionTem);
this.model = new CustomerModel();
this.$el.append(_registerDes((this.model.toJSON())));
}
});
return ContainerRegisterView;
});
我认为您的问题可能是缺少型号id
。对于backboneserver交互,您可能会发现需要id
属性。尝试按如下方式修改代码:
define(["underscore" , "backbone"],function(_ , Backbone){
var CustomerModel = Backbone.Model.extend({
urlRoot: 'http://myresturl/api/CusWeb',
initialize: function(){
},
defaults : {
UID: "00000000-0000-0000-0000-000000000000",
Sex: 0,
Name: "",
Company: "",
Address: "",
Email: ""
},
idAttribute: "UID" // set "UID" as the alias for "id"
});
return CustomerModel;
});
这里有一篇关于类似问题的博文,内容更为详细首先,您需要在模型上设置idAttribute,如@SteamDev所说
var CustomerModel = Backbone.Model.extend({
urlRoot: 'http://myresturl/api/CusWeb',
initialize: function(){
},
defaults : {
//UID: "00000000-0000-0000-0000-000000000000",
Sex: 0,
Name: "",
Company: "",
Address: "",
Email: ""
},
idAttribute: "UID" // set "UID" as the alias for "id"
});
其次,您不需要设置UID值(无论是在模型的默认值上,还是在模型实例上)。当您保存模型时,您是否在开发工具的网络页面上看到对服务器的请求?@Sergey:不,我没有。如果您没有REST请求,那么主干应用程序中就有错误。尝试设置调试器
在这个.model.save()之前代码>和debug@Sergey:我必须设置主干调试器
扩展才能进行调试,还是主干有自己的调试器?我没有通过搜索Google找到它。不确定这是否与问题有关,但render()
需要在您的视图中返回此
。嘿,Nakul91,我收到了此错误未捕获错误:bindAll必须传递函数名
。删除该行并检查一次。删除该行,没有任何更改(this.model.save()不起作用)。您是否在浏览器控制台中遇到任何类型的错误?在放置idAttribute
时,它没有出现任何更改。我想知道的另一件事是,此.model.save
似乎不起作用,success
和error
函数没有显示任何消息。修改后仍然没有任何更改。您能告诉我您的情况吗u将模型传递到ContainerRegisterView
当您执行new ContainerRegisterView()
时?我在视图中执行new
的位置添加了路由器的块,并将模型传递到视图,我在视图中的render()
方法中执行此操作。