1
我写使用骨干+轨的应用程序。
该应用程序允许用户创建门票,并显示这些票的实时使用实时服务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。我意识到比赛条件,并寻找好的和强大的解决方案。
谢谢!
是的,我知道。我的问题是主干应用程序接收对象两次 - 一次在'save'回调中,一次通过'pusher'信号(显然没有cid)。 这就是为什么我有两个对象 - 一个用__cid__,另一个用__id__。 重要的事情 - 不可能知道哪个是首先执行的 - **保存回调**或**推送器信号回调**。 – guyaloni
你能用推送器代码更新你的问题吗? –
刚刚做过,如果您需要更多信息,请告知我。 – guyaloni