javascript - BackBoneJs不在服务器上进行 Delete/更新模型

  显示原文与译文双语对照的内容
0 0

我有一个 reads/create/update 模型的应用程序并将它保存到服务器。 但是现在我可以从数据库中读取和保存模型。 但是我无法将模型从 delete/update 发送到服务器。 目前,视图被删除,但不是模型本身,这里是JSFiddle路径 http://jsfiddle.net/u17xwzLh/1/。

$(function() {

模型

 var modelContact = Backbone.Model.extend({
 defaults: function() {
 return {
 Id: 0,
 Name:"",
 Address:""
 };
 }, 
//if i add this idAttribute ="Id" it deletes the value from the server 
//but i am unable to create a new model/new entry to the database
 clear: function () {
//Deletes the model but the changes are not posted back to the server
 this.destroy(); 
 }
});

收集

//runs fine
var contactCollection = Backbone.Collection.extend({
 model: modelContact,
 url: 'api/Contact'
});
var contacts = new contactCollection;

ModelView

var contactView = Backbone.View.extend({
 tagName:"tr",
 events: {//runs fine
"click a.destroy":"clear"
 },
 template: _.template($("#newContacttemplate").html()),//runs fine
 initialize: function() {
 this.model.on("change", this.render, this);
 this.model.on('destroy', this.remove, this);
 },
 render: function() {//runs fine
 this.$el.html(this.template(this.model.toJSON()));
 return this;
 },
 clear: function () {
 this.model.clear();
 }
});

var main = Backbone.View.extend({
 el: $("#contactApp"),
 events: {//runs fine
"click #btnsave":"CreateNewContact"
 },
 initialize: function() {//runs fine
 this.Nameinput = this.$("#contactname");
 this.Addressinput = this.$("#contactaddress");
 contacts.on("add", this.AddContact, this);
 contacts.on("reset", this.AddContacts, this);
 contacts.fetch();//Note : populates all the database values
 },
 AddContact: function(contact) {//runs fine
 var view = new contactView({ model: contact });
 this.$("#tblcontact tbody").append(view.render().el);
 },
 AddContacts: function() {//runs fine
 contacts.each(this.AddContact);
 },
 CreateNewContact: function(e) {//runs fine
 contacts.create({ Name: this.Nameinput.val(), Address: this.Addressinput.val() });
 }
});
var m = new main;

%7D);

时间:原作者:1个回答

0 0

现在你已经在 Backbone.Collection 上定义了 URL,但没有在 Backbone.Model 上定义,这意味着你必须通过 Collection 完成所有AJAX工作。 但是,它不必是那样的: 你可以在服务器端为 Model AJAX操作添加第二个 URL,或者两者甚至可以共享 URL ( 如果你正确设置了它) 。

重要的部分,如果你想能够调用 this.destroy(); 并将它的反映在服务器上,则需要:

  1. 可以使用 DELETE 方法处理请求的服务器上的URL ( vs 。 常用的获取或者POST方法
  2. 设置为服务器端URL的Backbone.Model 上的URL 属性

在你调用 this.destroy(); 将创建 DELETE AJAX请求之后,服务器将接收到该请求,并知道应该在和服务器端同时删除该模型。

原作者:
...