根据互联网上的大量资源,我尝试创建发送POST /api/v1/users/subscribe
请求的自定义模型操作。我的代码如下所示:
@UserModel = Backbone.Model.extend
urlRoot: '/api/v1/users'
subscribe: (opts) ->
url = "#{@urlRoot}/subscribe"
options =
url: @url
method: 'POST'
_.extend @options, opts
return (@sync or Backbone.sync).call this, null, this, @options
但是,使用时如下:
user = new UserModel
user.subscribe()
这是一个GET /api/v1/users
请求。你能解释一下我的代码有什么问题吗?几乎所有关于自定义方法的示例都如下所示:https://gist.github.com/sap1ens/4692429我的代码是它的确切端口。
提前致谢
答案 0 :(得分:2)
来自 backbonejs.org :选项 - 成功和错误回调以及所有其他jQuery请求选项
Backbone.sync方法的options参数接受jquery请求选项。要指定请求的类型,正确的jquery选项是'type'(jQuery.ajax)。以下代码可以使用
var UserModel = Backbone.Model.extend({
urlRoot: '/api/v1/users',
subscribe: function (opts) {
var url = "this.urlRoot/subscribe"
var options = {
url: url,
type: 'POST'
};
_.extend( options, opts);
return Backbone.sync.call( this, null, this, options);
}
});
user = new UserModel();
user.subscribe();
P.S。:我不擅长咖啡剧本,所以粗略地把它翻译成普通的js。
答案 1 :(得分:1)
请注意@
,url: @url
中的_.extend @options, opts
和您的退货声明。请记住,Coffescript会将@
编译为this
。
@UserModel = Backbone.Model.extend
urlRoot: '/api/v1/users'
subscribe: (opts) ->
url = "#{@urlRoot}/subscribe"
options =
url: url
type: 'POST'
_.extend options, opts
return (@sync or Backbone.sync).call @, null, @, options