微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

javascript – 为Backbone模型添加功能?

我正在试图找出完成自定义更新的“正确”方法
Backbone.js模型中的函数.我正在尝试做的一个例子是:

var Cat = Backbone.Model.extend({

  defaults: {
    name     : 'Mr. Bigglesworth',
    location : 'Living Room',
    action   : 'sleeping'
  },

  sleep: function () {
    // POST /cats/{{ cat_id }}/action
    // { action: "sleep" }
  },

  meow: function () {
    // POST /cats/{{ cat_id }}/action
    // { action: "meow" }
  }

})

据我所知,Backbone.Collection.save()方法只执行
以下:

POST /cats/{{ cat_id }}
{ name: 'Mr. Bigglesworth', location: 'Living Room', action: '{{ value }} '}

但我正在使用的API不会让我以这种方式改变行动,只能通过:

POST /cats/{{ cat_id }}/action
{ action: "{{ value }}" }

希望这有道理吗?

任何帮助,将不胜感激.

解决方法:

调用save时,可以将URL作为参数传递.也许你可以这样做:

var Cat = Backbone.Model.extend({
  urlRoot: '/cats/',

  defaults: {
    name     : 'Mr. Bigglesworth',
    location : 'Living Room',
    action   : 'sleeping'
  },

  sleep: function () {
    var custom_url = this.urlRoot + this.id + "/action";
    this.save({}, { url: custom_url});
    // POST /cats/{{ cat_id }}/action
    // { action: "sleep" }
  },
});

见:Posting form data using .save() to pass url parameters.

如果您始终希望在更新时使用自定义URL,也可以实现同步方法以使用其他URL.例如,见:backbone.js use different urls for model save and fetch.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐