处理非标准的ext js网格服务器通信

问题描述:

ext js(v4)网格我在任何给定的时间接收json记录的集合,其中每个记录都有一个标记,告诉网格执行旁边的操作属性。例如,进入集合在一个网格可能会遇到以下(ID为是关键):处理非标准的ext js网格服务器通信

{"records": 
    [{"id":"101", "name":"I'm new", "op":"create"}, 
    {"id":"102", "name":"I'm old", "op":"delete"}, 
    {"id":"103", "name":"I'm different", "op":"update"}] 
} 

我想编写代码来告诉网格或商店在执行这些各种操作模型,但没有该操作,然后回发到服务器(毕竟,这是指令的来源)。简单地说,客户端网格应该代表服务器上的内容,对象可以在哪里弹出和不存在。

我已经研究了代理的读者和作者,或从json代理本身继承并修改读/写行为,但好像我仍然需要调用destroy/create/update命令在模型本身上,然后以某种方式使模型行为短路,以便它们不会将该crud操作发送回服务器。但是,这些选项都不是很正确。

在这种情况下,我应该使用一个ext-js组件而不是代理/读/写对象吗?

你在想这个。
您不需要将操作发送回电网。如果您的服务器发送了一组缺少记录(已删除)的新数据,它将不会显示在网格中。如果您将更改的数据集发送到网格(写入),则这些更改将显示出来。如果您在服务器端添加记录并将其发送到网格 - 则会显示一条新记录。

基本上,如果你的服务器端驱动所有的变化,那么你不需要编写器配置,只需要只读网格。

+0

DmitryB - 查看删除:数据没有被刷新整个,不幸的是,现在有太多的数据。 Delta操作也为我省去了事务组中的麻烦,因此如果网格中有记录,并且操作在标记为删除的记录上结束,网格将需要这样做。与更新相同,并与插入相同。他们是原子操作,不刷新。 – inyourcorner 2012-02-18 14:45:18

+1

如果我理解正确的话,你在网格中有很多数据,你不想刷新整个事情。但您确实想要更新服务器端更改的网格。 - 听起来像是服务器端推送的情况。因此,在这种情况下,您可能需要一个控制器方法来获取您的消息,并对收到的每条记录执行一次存储操作。这都是自定义的东西,但不是非常复杂。 – dbrin 2012-02-19 05:20:32

+0

是的,我同意。我期待在这里编写自定义代码,所以在那里。只是一个问题,让我从正确的方向开始:我的控制器方法来执行存储操作:如果我调用store(或model)上的update/create/destroy方法,是不是会尝试回调服务器,原来的推动来自哪里?这是我的主要关注点 - 我不是在正确的对象(模型)上操作,或者我必须重写模型crud操作的默认行为,以便不会执行任何操作(即推送到服务器)。谢谢您的帮助;提出意见。 – inyourcorner 2012-02-19 17:34:05