你如何取代Backbone.sync而不做任何事情?我的应用程序有一个“提交”按钮,它将为我执行AJAX POST,所以我不想使用Backbone.sync提供的auto-magic默认行为。如何取代Backbone.sync,甚至没有localStorage?
我也不想用,因为我努力使本站兼容IE6和7
话虽这么说,我几乎只想骨干什么都不做,除了保留记录骨干localStorage的适配器在JS内存中(类似于Spine.js)。这甚至有可能吗?
你如何取代Backbone.sync而不做任何事情?我的应用程序有一个“提交”按钮,它将为我执行AJAX POST,所以我不想使用Backbone.sync提供的auto-magic默认行为。如何取代Backbone.sync,甚至没有localStorage?
我也不想用,因为我努力使本站兼容IE6和7
话虽这么说,我几乎只想骨干什么都不做,除了保留记录骨干localStorage的适配器在JS内存中(类似于Spine.js)。这甚至有可能吗?
最简单也是最好的方法是取代Backbone.Sync,而不是简单地忽略它。这里有你不想调用的方法:
类别:
型号:
如果您避免调用这些方法中的任何一种,您将有效地忽略Backbone.Sync并能够编写自己的代码来执行AJAX调用。
当我开始时,我写了很多Backbone代码,没有涉及服务器调用。没有规则说你必须使用Backbone的所有功能。事实上,我会说相反的事实。骨干网以这种模块化的方式编写,每个功能和专业领域都非常好,所以你应该只使用你实际需要的东西。
在内存中创建您的模型,请拨打set
和get
来存储数据。根据需要将它们填入add
和remove
。将模型和集合传递给您的视图并将其呈现给HTML DOM。只要避免调用上面列出的方法,您就不必担心Backbone.Sync。
谢谢。这非常有意义。在旁注中,如果你不使用Model.destroy(),你如何正确“销毁”某些东西?使用collection.remove并绑定到remove事件? – kidcapital
是的,那样做。在任何有参考的地方去除引用模型,它将被垃圾收集。 –
我曾将this gist作为Backbone.js教程的一部分。它伪造Backbone.sync
只写日志,但为了赋予其真实感,它还将模型的.cid
属性复制到它的.id
属性中,以使模型显示为同步。谨防在生产中使用该技术的各种不必要的后果!但我们都在这里同意大人,对吧?
这里没有记录了同样的想法:
Backbone.sync = function(method, model, succeeded) {
if(typeof model.cid != 'undefined') {
// It's a freshly made model
var cid = model.cid;
// ..fake that it's .cid turns into a "real" .id:
model.unset('cid').set({id:cid}, {silent:true});
}
// Oh yes, it all went sooo well ;-)
succeeded(model);
};
我认为自你写这个以来API已经发生了变化,因为第三个参数不是回调函数。我只是'返回false',它似乎工作正常。但是你提到了“各种不需要的后果” - 如果我的所有数据都是客户端的,不需要持久性,那会是什么? –
简单,不要用骨干,并切换到一个简单的跨浏览器的Ajax处理程序。 – 2011-10-13 04:29:05