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
。
我想为我的 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
。