0

我正在尝试做一些有趣的事情:我想将记录更改从一个客户端发送到另一个客户端,并更新第二个客户端以显示这些更改。基本上是协同观看。第二个客户端无法进行更改,他只能观看。

字符串、数字、复选框等简单字段很简单,可以立即使用。

参考是问题。如果我有一个使用另一个模型作为源的组合,我无法在第二个客户端上更新它。

我尝试只设置 id,然后是整个引用对象,我尝试了各种设置选项,但根本没有骰子。

记录确实发生了变化,我看到数据已更新,我什至可以手动修改 _ 引用属性,但 UI 一直显示这些字段的旧值。

有没有办法将记录从一个客户端发送到另一个客户端,让另一个客户端接管所有值并在 UI 中显示它们?最好只发送更改,但如果我能让它与整个记录一起工作,我会非常高兴

编辑:我将 SailsJS 与 socket.io 一起使用,所以 p2p 连接不是问题。

我得到这样的数据:

var data = record.getData(true);
broadcastRecord(data);

另一方面,我尝试了:

record.set(data);

如果有人知道如何解决这个问题,将不胜感激接收方的代码示例......

4

1 回答 1

0

我认为您的问题与关联和组合框有关。

假设您有一个模型用户,其字段组引用模型组,并且您有一个带有组组合框的用户表单。

在接收方客户端中,您可能只获得组 ID。record.set(data) 更新绑定的组合框调用 setValue(groupId)。

此 setValue 将尝试在其存储中找到相应的记录,但它不会向服务器端询问该记录。相反,它将使用传递的 id 创建一个新记录(显示一个空的组合框)。

如果可能,您可以将 remoteFilter:false 设置为 store 并在组合框上设置 queryMode:'local' 并预加载该 store 中的所有数据。

否则,我认为您必须覆盖组合框 setValue 方法才能远程获取记录。

于 2017-08-28T13:08:23.180 回答