Kendo UI DataSource toJSON 落后一个值

Kendo UI DataSource toJSON is behind by a value

我有一个 angular 应用程序,我正在尝试在 Kendo 网格中创建批量编辑。我手动将数据添加到网格,因此不使用数据源的传输机制,而只是调用数据源上的 .data()。

当我编辑一个单元格时,它会正确触发保存事件,该事件也会传递修改后的数据项,但是当我调用 .toJSON() 以获取模型的原始数据时,.toJSON( ) 似乎与模型本身的输出不同。就好像 .toJSON() 落后于迭代,因为当我再次编辑单元格时,它是我得到的前一个值。

可以在这里看到它的一个例子:http://dojo.telerik.com/ujiSu/5

尝试编辑产品名称,然后在控制台中可以看到模型的输出和model.toJSON()

的输出

我试过在 .toJSON() 之前在数据源上调用 .read(),但这导致数据源由于某种原因被清空。

我也一直在查看模型数据的脏 属性,迫使它的脏状态发生变化,但也没有任何不同的结果。

我的目标是获取显示在网格和数据源中的原始当前数据。

非常感谢任何帮助。

在网格的保存事件中,模型还没有更新。它 由网格更新(即推入网格的数据源) 保存事件之后。这是因为可以通过 e.preventDefault() 取消保存事件。 http://docs.telerik.com/kendo-ui/api/javascript/ui/grid#events-save

因此,e.model 包含数据源项的当前状态,e.values 包含更新的字段,直到保存完成,此时 e.values 中的值被推入数据源模型。

您需要在网格保存事件中将 e.values 与 e.model 结合使用,或者您可能想要查看数据源更改事件 http://docs.telerik.com/kendo-ui/api/javascript/data/datasource#events-change,其中的操作是 "itemchange" 因为这将在网格保存事件之后发生(只要你没有取消它)。