ExtJS在客户端

时间:2017-08-25 09:02:54

标签: extjs extjs6 extjs6-classic extjs6.2

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

字符串,数字,复选框等简单字段很容易,马上就可以使用。

引用是问题所在。如果我有一个使用其他模型作为其来源的组合,我无法在第二个客户端更新它。

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

记录确实发生变化,我看到数据已更新,我甚至可以手动修改_参考属性,但UI会不断显示这些字段的旧值。

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

编辑:我在socket.io上使用SailsJS,所以p2p连接不是问题。

我得到的数据是这样的:

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

另一方面,我尝试过:

record.set(data);

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

1 个答案:

答案 0 :(得分:0)

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

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

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

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

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

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