我想对我的骨干模型使用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)。我不知道我还能在这里发布什么来帮助我更方便,所以请问你是否需要任何东西。
提前致谢!
答案 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
。