Kendo ui 哪一个更适合绑定KendoUI TreeView-kendo.observehierarchy或kendo.data.HierarchicalDataSource?
我正在优化一个应用程序,它使用Kendo TreeView来显示大量分层数据。目前,由于元素的数量很多,它的速度非常慢。当前的实现基于KendoUI的MVVM方法,利用kendo.observehierarchy。我想知道是否切换到kendo.data.hierarchycalDataSource。我会有任何绩效福利吗?一般来说,推荐的方法是什么 我在当前实现中使用了以下类型的代码Kendo ui 哪一个更适合绑定KendoUI TreeView-kendo.observehierarchy或kendo.data.HierarchicalDataSource?,kendo-ui,kendo-treeview,Kendo Ui,Kendo Treeview,我正在优化一个应用程序,它使用Kendo TreeView来显示大量分层数据。目前,由于元素的数量很多,它的速度非常慢。当前的实现基于KendoUI的MVVM方法,利用kendo.observehierarchy。我想知道是否切换到kendo.data.hierarchycalDataSource。我会有任何绩效福利吗?一般来说,推荐的方法是什么 我在当前实现中使用了以下类型的代码 var viewModel = kendo.observable({ isVisible: true,
var viewModel = kendo.observable({
isVisible: true,
onSelect: function(e) {
var treeView = e.sender;
var text = treeView.text(e.node);
kendoConsole.log("event :: select (" + text + ")");
},
files: kendo.observableHierarchy([
{ name: "My Web Site", type: "folder", expanded: true, items: [
{ name: "images", type: "folder", expanded: true, items: [
{ name: "logo.png", type: "image" },
{ name: "my-photo.jpg", type: "image" }
] },
{ name: "resources", type: "folder", expanded: true, items: [
{ name: "resources", type: "folder" },
{ name: "zip", type: "folder" }
] },
{ name: "about.html", type: "html" },
{ name: "index.html", type: "html" }
] }
]),
printFiles: function() {
// helper function that prints the relevant data from the hierarchical model
var items = this.get("files").toJSON();
function removeFields(item) {
delete item.index;
if (item.items.length == 0) {
delete item.items;
} else {
item.items = $.map(item.items, removeFields);
}
return item;
}
$.map(items, removeFields);
var jsonString = JSON.stringify(items, null, 2);
return jsonString.replace(/\n/gi, "\n ")
.replace(/\n\s*("name)/gi, " $1")
.replace(/\n\s*("type)/gi, " $1")
.replace(/\n\s*("expanded)/gi, " $1")
.replace(/\n\s*("selected)/gi, " $1")
.replace(/\n\s*("items)/gi, " $1")
.replace(/\s*\n\s*(})/gi, " $1")
.replace(/(\s*)]\n\s*}/gi, "] }");
}
});
kendo.bind($("#example"), viewModel);
observehierarchy
使用hierarchycaldatasource
实现,因此从一个切换到另一个可能不会有太大变化。
关于性能问题,有三个问题:要呈现的DOM元素数量、对服务器的请求数量以及传输的数据的大小
如果问题是渲染元素花费的时间太长,可以通过将选项设置为true
,这将导致在展开元素时渲染它们(如果使用本地数据,则默认为false)
如果您正在使用远程绑定,并且担心它在加载后的响应性如何,那么可以通过在一个请求中获取所有数据,而不是为每个级别发出单独的请求来改进此问题(但如果您已经在使用本地数据,则不适用)。另一方面,如果您关心初始设置需要多长时间,则应使用loadOnDemand:true
,以便小部件仅从服务器请求需要显示的数据