12

我正在尝试触发backbone.js DELETE 请求,但在我的控制台中看不到任何请求。

我有这样的集合模型:

var Model = Backbone.Model.extend(
{
    urlRoot: '/test',
    defaults:{}
});

var TableList = Backbone.Collection.extend(
{
    url: '/test',
    model: Model
});

在我看来,我正在运行这个:

this.model.destroy();

一切似乎都运行良好,我可以看到来自调用破坏的删除函数的输出,所以我知道它正在到达那里,而且它还成功运行了我拥有的取消渲染方法。但是看不到对服务器的任何请求?

4

3 回答 3

14

如果我没记错的话,您的模型上必须有一个 id 属性,以确保它访问正确的 url。IE 如果你的模型是...

var Model = Backbone.Model.extend({
    url: '/some/url'
});

var model = new Model({
    id: 1 
});
model.destroy(); // I THINK it will now try and DELETE to /some/url/1

没有 id 它不知道如何正确构建 url,通常你会获取模型,或者创建一个新模型并保存它,然后你就会有一个 Url...

看看有没有帮助!

于 2012-05-25T03:23:34.053 回答
4

我发现了我的问题,但还没有解决方案。我不确定这是否是主干的错误,但我正在使用ajaxSetupand ajaxPrefilter。我试着把它评论出来,它奏效了。我将其缩小到 ajaxSetup 方法和具体使用data参数来预设一些值。

于 2012-05-25T17:09:20.777 回答
1

您是否尝试过使用成功和错误回调?

this.model.destroy({
    success : _.bind(function(model, response) {
                  ...some code
              }, this),
    error : _.bind(function(model, response) {
                  ...some code
              }, this);
});

如果您没有看到 DELETE 请求,可能会有指导意义。

于 2012-05-24T21:50:02.000 回答