【发布时间】:2019-05-27 13:33:59
【问题描述】:
有两个事件处理程序:一个将节点添加到树中,另一个 - 删除它。它可以正常工作,直到通过调用“检查”事件删除节点。
这是一棵树(在节点检查后 - 它被删除):
$('#folderAttributeTree').kendoTreeView({
dataSource: this.attributeTree,
dataRole: "treeview",
dataTextField: "name",
checkboxes: true,
loadOnDemand: true,
check: function(e) {
var treeView = e.sender,
checkedNode = e.node;
treeView.remove(checkedNode);
},
dataBound: function(e) {
if (!this.dataSource.data().length) {
this.element.append("<li class='no-items'>No items yet.</li>");
} else {
this.element.find(".no-items").remove();
}
}
}).data("kendoTreeView");
这里是添加节点方法(它总是创建嵌套元素):
addLabel: function(e) {
e.preventDefault();
var label = this.get('folder_label'),
folderAttributeTree = $("#folderAttributeTree").data("kendoTreeView"),
attributeTree = this.get('attributeTree')
data = [];
if (label !== null && label !== '') {
if (attributeTree.length) {
data = attributeTree;
var i = 0;
while (data.length) {
data = data[0].items;
i++;
}
data.push({
name: label,
type: 'folder',
expanded: true,
id: i,
items: [],
hasChildren: true,
itemIndex: 0
});
} else {
this.set('attributeTree', [{
name: label,
type: 'folder',
expanded: true,
id: 0,
items: [],
hasChildren: true,
itemIndex: 0
}]);
}
}
this.set('folder_label', '');
folderAttributeTree.setDataSource(this.attributeTree);
}
问题是,当我在删除节点后尝试添加节点时 - 树视图不再重新渲染(但是,如果我检查 console.log,数据将按应有的方式添加到对象中)。
我是 kendo-ui 的新手。请帮我解决这个问题。
提前谢谢你!
【问题讨论】:
-
这是一种将节点插入树的奇怪方法,从未见过。例如,您为什么不尝试使用
append()或insertAfter()? -
是的,我正在尝试,但现在我找不到如何获得最深节点的方法.. 有什么建议吗?
-
您的数据是本地的还是远程的?
-
@DontVoteMeDown 数据是本地的
标签: javascript jquery kendo-ui treeview kendo-treeview