Backbone.js DELETE请求未触发

时间:2012-05-24 20:09:29

标签: backbone.js sync

我正在尝试获取backbone.js DELETE请求,但是在我的控制台中没有看到任何请求。

我有这样的收藏模型:

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

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

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

this.model.destroy();

一切似乎运行正常,我可以看到输出来自调用destroy的remove函数,所以我知道它已经到达那里,而且它也成功地运行了一个我有的unrender方法。看不到对服务器发出的任何请求了吗?

3 个答案:

答案 0 :(得分:13)

如果我没有弄错,你必须在你的模型上有一个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 ...

看看是否有帮助!

答案 1 :(得分:4)

我发现了问题的问题,认为还没有解决方案。我不确定这是否是主干的错误,但我正在使用ajaxSetupajaxPrefilter。我试着将它评论出来并且有效。我将其缩小到ajaxSetup方法,特别是使用data参数来预设一些值。

答案 2 :(得分:1)

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

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

如果您没有看到DELETE请求,可能会有所帮助。