调用backbone.js销毁

问题描述:

在哪里获取记录ID我有一些测试代码,我只是试图找出backbone.js。当我调用模型对象骨干上的销毁时,向我的休息服务发出DELETE请求。但是,我看不到任何ID,指示请求数据,查询字符串,主体或任何地方正在删除哪条记录。调用backbone.js销毁

我的模型有一个id属性,我已经将它赋值为1.是否还有其他任何我必须做的确保id通过服务器?还是有一些其他的方式,我应该检测哪些记录被删除?

编辑 - 下面是相关代码:

var AccountModel = Backbone.Model.extend({ 
    url: 'Account/Update', 
    id: null, 
    username: '' 
}); 

var accountM = new AccountModel({id: 1, username: 'test'}); 

accountM.destroy(); 

当我看着我的调试器看到的AJAX请求时,它只是看起来像这样:

Request URL:http://localhost/probli/Account/Update 
Request Method:DELETE 
Status Code:200 OK 

有好好尝试一下似乎成为一个ID或任何东西,并没有发布数据。我做错了什么?谢谢。

+1

,你可以分享你的请测试代码? – 2012-01-14 04:00:21

+0

我刚刚编辑帖子以添加代码。感谢您的期待! – Jason 2012-01-16 01:32:08

你应该设置你的模型urlRoot属性然后让骨干手柄构建DELETE网址:

var AccountModel = Backbone.Model.extend({ 
    urlRoot: 'Account/Update', 
    id: null, 
    username: '' 
}); 

这将导致以下请求时accountM.destroy()叫做:

Request URL:http://localhost/probli/Account/Update/1 
Request Method:DELETE 
Status Code:200 OK 
+0

,这就是它 - 谢谢! – Jason 2012-01-16 02:11:21

+0

null id如何变成1? – lulalala 2012-09-24 08:34:40

+0

@lulalala在创建一个新的实例时使用这一行'new AccountModel({id:1,username:'test'});' – 2012-09-24 14:09:28

Backbone.sync会将该销毁作为一个简单的请求与URL中的ID一起发回。例如:

DELETE http://example.com/foos/1

这是HTTP删除一个Foo1的ID。

在像Rails,ASP.NET MVC,甚至Sinatra和其他简单服务器的MVC Web服务器中,这将成为通过服务器传递的参数。

例如,在西纳特拉:


delete "/foos/:id" do 

    id = params[:id] # the id from the url/route 

    foo = Foos.find(id) # get the foo 
    foo.destroy 
    return {}.to_json 
end 

正如你所看到的,我在路由定义的参数,称为:id和我的代码能够通过params数据进行访问。然后我发现Foo有问题,销毁它,并返回一个空的JSON结果 - 这是Backbone需要的,即使在销毁期间也是如此。

希望有所帮助。

+0

感谢您的回复。是否有骨干javascript的地方,你指定id将被添加到网址?我刚刚发布了一些示例代码,看着dubugger,我可以看到请求正在创建,但没有id。谢谢。 – Jason 2012-01-16 01:33:16

+0

对此的任何更新。我有同样的问题。发送DELETE请求,但不在URL中发送“id”。我已经检查过该模型是否存在于收集中,并且有效的ID为 – detj 2012-09-27 13:52:57