我使用PHP和此对象文字形式访问我的服务器。此对象文字转换为JSON并发送到服务器,然后将其转换回对象。从那里我读取了model属性以了解要运行的模型。此外,包含的是用户令牌,因此我知道要为哪个用户检索模型数据。
$A.Packet.define({
model: null,
client: {},
server: {
smalls: {},
feed: {},
favorites: {}
}
});
基本上,策略是将信息编码为对象文字,json对其进行编码,发送,解码,应用服务器逻辑并以JSON格式发回数据。
这一切都被抽象为正在运行的
$A.Packet.push({model: self.Name});
然后pre(packet)
和post(packet)
ajax方法自动运行。
如何将这种风格整合到主干中?
根据Backbone的说法,我可以覆盖sync()
函数,但我想在黑客入侵之前最好地理解如何整合东西。
我的代码已经转换为MV *格式,但我正在使用虚拟数据来测试前端。我现在想把后端带上去。
开发网站在这里:
相关
How to override Backbone.sync? - 但是我还不想使用localStorage,我对它必须实现的4种方法没有用处。
我的所有操作都是POST JSON调用,这些调用在他们到达服务器后就会执行所需的操作。
答案 0 :(得分:1)
在带注释的Backbone.LocalStorage来源中,有一个名为Backbone.LocalStorage.sync
的文档末尾的静态方法别名为Backbone.localSync
。这是他们编写实现自定义同步的代码的实际部分。
Backbone.sync
引用到Backbone.ajaxSync
。Backbone.sync
以使用策略。这允许开发人员通过向模型根对象添加属性来选择哪种同步类型,在本例中为localStorage : new Backbone.LocalStorage()
。您只需要根据自己的需要实现它。
// Create your own sync method
Backbone.customSync = function(method, model, options, error) {
// Your custom sync code here
return $.post('http://something.somewh.ere', model.toJSON());
// Implementing a switch statement for the method in here would
// be a good idea :-)
}
// Create reference to original sync method
Backbone.ajaxSync = Backbone.sync;
// Get the sync strategy
Backbone.getSyncMethod = function(model) {
if(model.customSync || (model.collection && model.collection.customSync))
return Backbone.customSync;
return Backbone.ajaxSync;
};
// Overwrite Backbone.sync to call getSyncMethod() to run sync tasks
Backbone.sync = function(method, model, options, error) {
return Backbone.getSyncMethod(model)
.apply(this, [method, model, options, error]);
};
现在,如果您的模型的属性customSync
是真值,则会使用新的同步策略。
这一切都可以根据您的需求进行调整,希望这会有所帮助。