0

背景

我正在一个基于客户端-服务器 REST 的应用程序中工作,该应用程序管理各种信息并定义了一个EntitiesCollection扩展Backbone.Collection. 它EntitiesCollection有一个用于 CRUD 操作、过滤、排序等的 API(它扩展了 Backbone.Collection API)。

我的团队需要编写一个可以显示和操作EntitiesCollection对象的 Grid 组件。该网格将基于一些 3rd 方组件,我们正在认真考虑使用Kendo.Grid.

挑战

我的第一个问题是,是否有人曾尝试使用其 data\data-source 实际上是 Backbone.Collection 的 Kendo.Grid,这是否是一个好的和适用的想法?

我看过各种关于KendoBackbone集成的文章,包括 Derick Bailey 的Backbone And Kendo UI: A Beautiful Combination。但是,这些文章讨论了视图级别的集成(Kendo.Grid用 a包装Backbone.View)。我正在寻找的是数据级集成 -Kendo.GridBackbone.Collection.

选项

据我所知,到目前为止,它Kendo.Grid与 a 一起工作,Kendo.DataSource而后者又拥有一个内部集合 - a Kendo.ObservableArray

假设我们要这样做,我会看到几个实现选项:

  1. 我们讨论的选项之一是将我们的转换EntitiesCollection为 aKendo.DataSource但这似乎不是一个选项 - 与服务器的通信必须通过我们自己的对象完成。

  2. 替换为Kendo.DataSource-EntitiesCollection我们EntitiesCollection将实现Kendo.DataSourceAPI,并且网格将使用它作为它的 dataSource 对象。我不喜欢这个解决方案,因为我认为我会失去 Kendo 在Kendo.DataSource对象中为我提供的许多功能。

  3. Kendo.DataSource包装我们自己的EntitiesCollection并将请求委托给它。

  4. 包含的Kendo.ObservableArray对象Kendo.DataSource将包装我们的EntitiesCollection(参见我在网上找到的这个示例实现)。这种方法似乎适用于简单的用例,但是对我来说似乎有些问题-我认为这Backbone.Collection不是data对象(在剑道术语中)而是DataSource对象-因为它是与远程服务器交互并获取数据的对象。

4

2 回答 2

1

所有 Kendo UI 小部件(包括网格)只能绑定kendo.data.DataSource.

我创建了“ kendo-backbone ”项目来展示一种将 Kendo UI 与 Backbone 集成的可能方式。该项目将现有的 Backbone Collection 包装为 Kendo ObservableArray。后者就像一个简单的代理,完全与 Backbone 集合一起工作。

于 2013-02-06T13:03:44.720 回答
1

您可能对我刚刚发布的这篇文章感兴趣:

http://www.kendoui.c​​om/blogs/teamblog/posts/13-02-07/wrapping_a_backbone_collection_in_a_kendo_data_datasource.aspx

在其中,我介绍了构建适配器以使用 Backbone.Collection 作为 DataSource 的后备存储并将其连接到 Kendo UI Grid 所需的基本知识。

I haven't completely solved all of your needs - for example, no paging support - but hopefully this will get you down the path far enough.

于 2013-02-07T19:33:59.803 回答