【问题标题】:Kendo UI DataSource toJSON is behind by a valueKendo UI DataSource toJSON 落后一个值
【发布时间】:2016-11-03 22:09:23
【问题描述】:

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

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

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

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

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

我也一直在看模型数据的dirty属性,强制改变它的dirty状态,也没有任何不同的结果。

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

非常感谢您提供任何帮助。

【问题讨论】:

    标签: angularjs kendo-ui telerik kendo-datasource kendo-ui-grid


    【解决方案1】:

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

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

    您需要在网格保存事件中将 e.values 与 e.model 结合起来,或者您可能希望查看 DataSource 更改事件http://docs.telerik.com/kendo-ui/api/javascript/data/datasource#events-change,其中操作是“itemchange”,因为这将在网格保存之后发生活动(只要你没有取消它)。

    【讨论】:

    • 谢谢。我使用了网格保存事件并检查了 values 属性。
    猜你喜欢
    • 2014-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-08
    • 2015-08-05
    相关资源
    最近更新 更多