扩展主干模型保存
Extend Backbone model save
扩展
model.save
方法的最佳方法是什么?
我需要添加新方法来将相同的数据发布到后端,即:played
方法应该请求(通过 POST)apiurl/model/:id/played
例如:
var Game = Backbone.Model.Extend({
baseUrl: '/games/',
played: function(){
this.url = this.baseUrl + this.id + '/played'
this.save();
}
});
var game = new Game({id:3234}); //is only an example, instances are created before previuosly
game.played();
这种方式有效,但请求是 GET。此外,如果此save()
不发送请求中的所有属性,那就完美了。
添加信息:由于我必须与跨域 API 交互,因此我扩展了同步方法以使用 JSONP。此外,我还添加了一些安全说明。
//backbone sync
Backbone._sync = Backbone.sync;
Backbone.sync = function(method, model, options) {
//network
options.timeout = 10000;
options.dataType = "jsonp";
//security
if(_conf.general.accessToken){
var ak = _conf.general.accessToken,
url = model.url,
linker = url.indexOf('?') === -1 ? '?':'&';
model.url = url + linker + 'accessToken=' + ak+'&callback=';
}
//error manager
var originalError = options.error || function(){};
options.error = function(res){
originalError(res.status, $.parseJSON(res.responseText));
};
//call original Method
Backbone._sync(method, model, options);
};
Backbone 的
保存和获取方法只是调用 Backbone.sync 方法,而该方法又只是 ajax 调用的包装器。 您可以使用 save 函数传入 ajax 参数,而无需实际扩展它。 基本上最终是这样的:
game.save({attributes you want to save}, {type:'POST', url: 'apiurl/model/:id/played'});
不过,您每次都必须执行此操作,因此最好为您的模型扩展 Backbone.sync。
Backbone网站有一些关于我所说的信息,就Backbone同步和保存ajax选项而言。我也看到了一些关于扩展同步的示例,但目前我似乎无法追踪它们。
相关文章:
- 主干:如何保存模型集合中模型的属性更改
- 保存模型返回错误
- 猫鼬数据不会保存模型的新实例
- 主干:在单个请求中批量保存模型
- 如何使用轨迹选项进行选择,以角度保存模型中的选定对象
- JavascriptMVC - 保存模型时的验证错误
- 主干网.js - 在不保存模型的情况下发出 POST 请求
- EmberJS无法调用方法'查找'保存模型时未定义的
- 保存模型后无法重新渲染主干视图
- Django通过JS而不是表单提交来保存模型
- 在使用具有隔离作用域的指令时保存模型值不起作用
- Backbone.js保存模型don't在android 2.x上引起ajax PUT请求
- 保存模型时,只将所需的插件加载到架构中
- 保存模型记录不起作用(Spine)
- 保存模型时更新主干视图
- 从three.js中保存模型
- 余烬:下划线模型名称在JSON中保存模型
- 在AngularJS中保存模型的静态副本
- 主干保存模型问题
- Backbone.js保存模型的属性是其他模型的数组