如何使用Backbone.js和Rails更新一组记录?
我在Rails&Backbone.js应用程序中有通知
// MODEL NotificationModel = App.BB.Model.extend({ defaults : {} }); // COLLECTION NotificationCollection = App.BB.Collection.extend({ model: NotificationModel, url: '/notifications', initialize : function() { var me = this; me.fetch(); } });
该模型具有以下字段(id,read),其中read为true或false。
我想要做的是一旦用户查看通知,在服务器上将所有标记为READ = true。 使用Backbone.js的正确方法是什么?
谢谢
Backbone.js中没有批量上传,因此您有两个选择
-
继续作为骨干最好的工作,您可以更新集合中的每个模型以将项目设置为已读。
myCollection.each(function(note){ note.set({read: true}); note.save(); });
这会将模型发布到服务器并更新您的服务器(仅适用于该模型)是的,这可能看起来很重,但骨干网就是这样工作的,没有大量的模型更新(但是?)
-
另一种解决方案是自己发布一个定制的Ajax调用,例如这个jQuery调用。
var oData = {models : myCollection.toJSON() }; $.ajax({ type: "POST", url: "my/backend/url.php", data: oData }).done(function( msg ) { alert( "Data Saved: " + msg ); // your code after the post is completed... });
请记住:在此ajax调用完成后,您可能希望再次获取您的集合以更新它(否则您的集合中的模型将不知道您对服务器所做的更改,因此所有模型将列出read: true
在changedAttributes中为read: true
。
- Backbone.js应用程序可以逐步增强,并可以被搜索引擎抓取吗?
- Backbone.js路由器实例在某种程度上是无效的
- 未捕获的TypeError:undefined不是函数rails3 / backbone / js
- Marionette.js与Rails(设计)认证
- Backbone希望包含created_at,updated_at等,但我不想这样做
- 结合Ruby on Rails和Backbone
- 如何从Backbone应用程序POST到PUT和DELETE到不同子域的Rails应用程序?
- Marionette CompositeView为Collection中的每个Model而不是ItemView(Marionette Rails)渲染自己
- 带有backbone-rails的Rails:EJS文件中的资产助手(image_path)