【发布时间】:2014-02-11 23:11:30
【问题描述】:
我正在使用骨干网 + rails 编写应用程序。
该应用程序允许用户创建票证,并使用实时服务pusher向所有其他用户实时显示这些票证。
我的问题是,当用户创建票时,我将其添加到集合中:
addTicket: function( newTicketData ) {
var newTicket = new app.Ticket( newTicketData );
this.collection.add(newTicket, {merge: true});
newTicket.save(null, {
wait: true,
success: this.addTicketSuccess,
error: this.addTicketError
});
},
推送监听代码:
channel.bind('new_ticket', function(data) {
var ticketDataObj = jQuery.parseJSON( data.content );
app.ticketsView.addTicket(ticketDataObj);
});
此时,新模型有一个cid,但没有来自数据库的id,这可能在addTicketSuccess 回调中获得。
另一方面,服务器在 create 操作中发送推送信号,该信号发送带有 id 的新票证,但没有 id。
结果是集合中的两个不同模型代表同一个对象,一个具有 cid,另一个具有 id。我知道比赛条件,并正在寻找好的和强大的解决方案。
谢谢!!!
【问题讨论】:
标签: ruby-on-rails backbone.js pusher