自定义主干.模型操作不起作用

Custom Backbone.Model action not working

本文关键字:操作 不起作用 模型 自定义      更新时间:2023-09-26

基于在互联网上找到的大量资源,我正在尝试创建我的自定义模型操作,该操作将发送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我的代码就是它的精确端口。

提前感谢

来自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();

附言:我不擅长coffee脚本,所以大致翻译成了普通js。

小心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