Backbone.Model destroy 不包含模型 ID url

Backbone.Model destroy does not includes model ID in url

我想为我的 backbone 模型使用 delete 方法,但出于某种原因,backbone 不在生成的请求 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;

并且该代码会向 /api/v1/places/12/place_users 生成 DELETE 请求(不包含模型 ID)。我不确定我还能 post 在这里做什么,以便更轻松地帮助我,所以如果您需要任何东西,请询问。

提前致谢!

这是因为您定义了一个 url 函数,它只是 returns url 根。

如果您将模型更改为如下所示,它应该可以工作:

# 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