在哪里编码以覆盖 backbone.sync
Where to code inorder to override backbone.sync
我想覆盖 backbone.sync 我已经问过这个问题,但问题是我不太明白。如果要覆盖同步功能,我需要知道将代码放在哪里。
如果我像这样把它放在模型上
model = Backbone.Model.extend({ sync:"" });
那我应该怎么称呼它呢? 如果我使用 save 方法。我还需要将创建的方法图从 POST 更改为 PUT。暂时我求助于这个'create': 'PUT',
实际上编辑了主干.js文件(我知道它不好)。在我忘记之前,我还需要添加这个
sendAuthentication = function (xhr) {
xhr.setRequestHeader('Authorization', auth)
};
作为之前发送参数,因为我的服务器具有身份验证。再说一次,我应该在哪里做?我应该去哪里放代码?在我的模型中?在我的收藏中?还是在我看来?有什么帮助吗?谢谢。
更新
我还可以覆盖我的收藏上的同步吗? 我的意思是我可以有这样的东西吗?
collection = Backbone.Collection.extend({ sync:""});
Backbone 框架背后的策略是使其易于编辑并灵活满足各种需求。因此,如果您查找源代码,您会发现每个调用 Backbone.sync 的方法实际上都首先调用"this.sync"。
从骨干手册中,您可以阅读:
同步函数可以作为 Backbone.sync 全局覆盖,也可以在 更细粒度的级别,通过向主干网添加同步函数 集合或单个模型。
所以你有两个选择
选项 1 - 替换全局主干同步功能
如果你覆盖全局的Backbone.sync,你应该把你的代码放在你的全局应用程序文件中(实际上是你想要的任何位置,但它必须在你的初始javascript加载时被计算(执行),以便按预期工作
// Anywhere you want
Backbone.sync = function(method, collection, options) {
console.log(method, collection options)
}
这将覆盖Backbone.sync,并且实际上会在您的控制台上显示每次调用collection.fetch,save,delete等时所调用的内容。
在这里你没有默认的方法图,事实上你除了参数之外没有别的:
- 方法 - 这是一个字符串 - "读取"、"创建"、"删除"、"更新"
- 集合 - 这是调用该方法的集合实例
- 选项 - 有一些成功,错误功能,您可能会保留也可能不会保留。
在浏览器中调试它,同时阅读 Backbone 源代码,这很容易理解。
选项 2 - 添加到模型/集合同步方法
如果您希望对所有其他模型/集合使用默认的 Backbone.sync 方法,则使用此方法,但您专门定义的模型/集合除外:
mySocketModel = Backbone.Model.extend({
sync : function(method, collection, options) {
console.log('socket collection '+this.name+' sync called');
}
});
Partners = new mySocketModel({ name : 'partners' });
Users = new mySocketModel({ name : 'users' });
Log = new Backbone.Collection;
因此,如果您调用 Partners.fetch() 或 Users.fetch(),它们将不再调用 Backbone.sync,但 yor Log.fetch() 方法会调用。
- backbone.js无法渲染视图
- 如何使用backbone.js从集合中获取模型名称
- Backbone LayoutManager渲染问题
- Backbone.js restful json API design
- Backbone虹吸以获取对象数组
- 2个backbone.js集合,具有相同的模型,但排序顺序不同
- Backbone Sync返回一个空的$_POST数组
- 尝试使用Backbone.sync从Rails中的动作控制器获取数据-非restful
- 如何覆盖 Backbone.sync,以便在末尾添加 apikey 和用户名
- Backbone.sync 获取所有响应错误状态代码
- 在哪里编码以覆盖 backbone.sync
- 我需要覆盖backbone.sync以允许PUT方法
- 都是'sync'event和Backbone.sync以某种方式连接在一起——两者之间有什么区别
- 理解Backbone.sync方法中的[options]参数
- 有没有什么Backbone.js教程教".sync"与服务器
- 在模型级别重写Backbone.sync()以发送额外的参数
- 正在覆盖Backbone.sync
- rewrite backbone.sync
- 在PHP中接受backbone.js Sync中的JSON
- 错误回调后重新调用Backbone.Sync方法