Backbone.Model destroy不包含url

时间:2015-04-30 08:53:29

标签: javascript backbone.js backbone-model

我想对我的骨干模型使用delete方法,但出于某种原因,骨干网不会在生成的请求URL中包含该模型ID。要删除我的模型,我需要触发以下请求:DELETE /api/v1/places/12/place_users/12。这是我的代码:

# place_user.model.js
var PlaceUserModel = Backbone.Model.extend({
  url: function() {
    return this.urlRoot;
  },

  initialize: function(data, options) {
    this.urlRoot = '/api/v1/places/' + options.placeId + '/place_users'
  },
});

我试图使用以下方法删除它:

# PlaceUsersCollection fetches it's results from a remote api
placeUsers = new PlaceUsersCollection({placeId: 12}).fetch();

# it's obviously more complicated in the app but let's say i just want to
# remove first model
placeUsers.models[0].destroy;

该代码向DELETE生成/api/v1/places/12/place_users请求(未包含模型ID)。我不知道我还能在这里发布什么来帮助我更方便,所以请问你是否需要任何东西。

提前致谢!

1 个答案:

答案 0 :(得分:0)

这是因为您定义了一个url函数,它只返回urlroot。

如果您将模型更改为这样,则应该有效:

# place_user.model.js
var PlaceUserModel = Backbone.Model.extend({
  urlRoot: function() {
    return '/api/v1/places/' + this.options.placeId + '/place_users'
  }
});

如果定义了新实例,则会在创建新实例时自动调用initialize函数。传入的选项存储在实例中的this.options中,因此可以访问urlRoot函数中的this.options.placeId