骨干破坏错误

时间:2012-03-07 22:14:24

标签: backbone.js

当我在模型上调用骨干破坏方法时,我收到此错误。

  

必须指定“url”属性或函数

我正在使用本地集合,我在网上看到在destroy方法中调用save方法,该方法查找url。有没有解决的办法。如何防止错误发生。

2 个答案:

答案 0 :(得分:2)

正如nrabinowitz在评论中所述,destroy是用于从服务器中删除,并且实际上不会从集合中删除。

如果问题是将其从集合中移除,就像在评论中那样......

模型可以通过模型的collection属性访问它的集合。

var Model = Backbone.Model.extend({
        defaults:{ name: 'bob' }
    }),
    Collection = Backbone.Collection.extend({
        model: Model
    });

var c = new Collection([{ name: 'joe'}, {name: 'h'}, {name: 'bob'}]);

var m = c.at(1); // get model at index 1 name = h

m.collection.remove( m ); // access the collection via the model we pulled out

console.log( c.length ); // only 2 models within :)

http://jsfiddle.net/Pn2Vw/1/

答案 1 :(得分:0)

我有类似的问题。我的问题是我使用destroy回调来确定是否从冷却中删除模型:

this.model.destroy({
  success: function(model, response)  {
    this.remove();
  }
});

那,在从服务器返回Error 500进行测试时,我第二次尝试调用destroy 时出现了相同的错误

解决方案来自the manual。看起来虽然我没有调用this.remove();,但模型已从集合中移除:

  

如果您想在从集合中删除模型之前等待服务器响应,请通过{wait:true}。

结果如下:

this.model.destroy({
  wait: true,
  success: function(model, response)  {
    this.remove();
  }
});