Ruby on rails BackboneJS同步帮助程序(如Backbone.Sync.rails)的用途是什么?
我正在试验Rails BackboneJS堆栈,我在一些演示项目中看到了Backbone.sync.Rails的使用,例如,在这种风格中: 据我所知,这会覆盖主干模型和集合的同步功能。然而,在我的例子中,我得到了一些奇怪的效果(模型中意外的嵌套、空集合) 所以,我问自己,Rails同步助手的目的是什么?当(不)使用这些助手时,考虑什么是重要的?Ruby on rails BackboneJS同步帮助程序(如Backbone.Sync.rails)的用途是什么?,ruby-on-rails,backbone.js,Ruby On Rails,Backbone.js,我正在试验Rails BackboneJS堆栈,我在一些演示项目中看到了Backbone.sync.Rails的使用,例如,在这种风格中: 据我所知,这会覆盖主干模型和集合的同步功能。然而,在我的例子中,我得到了一些奇怪的效果(模型中意外的嵌套、空集合) 所以,我问自己,Rails同步助手的目的是什么?当(不)使用这些助手时,考虑什么是重要的? 谢谢 Sync本质上是主干网的通用钩子,用于所有较低级别的数据处理定制。在同步文档中,他们也会说: Backbone.sync是Backbone每次尝试
谢谢 Sync本质上是主干网的通用钩子,用于所有较低级别的数据处理定制。在同步文档中,他们也会说: Backbone.sync是Backbone每次尝试将模型读取或保存到服务器时调用的函数。默认情况下,它使用jQuery.ajax发出RESTful JSON请求并返回jqXHR。您可以覆盖它以使用不同的持久性策略,例如WebSocket、XML传输或本地存储 在Rails同步助手的例子中,作者甚至没有改变同步的基本性质(例如到本地存储)。相反,他的sync仍然“使用jQuery.ajax发出JSON请求并返回jqXHR”,但它:
主干.sync
。正如你所看到的,实现它的功能没有太多的困难,通过制作自己的定制功能,你天生就了解它是如何工作的(这很好,因为它对你的应用程序非常关键)
或者,您可以完全避免整个主干.sync
覆盖方法。相反,您可以使用其他机制,例如jQuery.ajaxSend()
来处理#1或您自己的自定义Model.toJSON
覆盖#2
beforeSend: function( xhr ) {
if (!options.noCSRF) {
var token = $('meta[name="csrf-token"]').attr('content');
if (token) xhr.setRequestHeader('X-CSRF-Token', token);
}
model.trigger('sync:start');
}
if(model.paramRoot) {
data[model.paramRoot] = model.toJSON();
} else {
data = model.toJSON();
}