我正在使用 jsTree 插件,发现第二次调用刷新()时,树将保持错误/加载状态。 这是代码:
.on('changed.jstree', function (e, data) {
var i, j, selectedNode;
selectedNode = data.node;
currentlySelectedNodeGUID = selectedNode.id;
//for (i = 0, j = data.selected.length; i < j; i++) {
// selectedNode = data.instance.get_node(data.selected[i]);
// currentlySelectedNodeGUID = selectedNode.id;
//}
$.ajax({
url: '@Url.Action("LocationProperties","Location")',
type: 'GET',
data: { id: currentlySelectedNodeGUID },
success: function (result) {
$('#locationPropertiesPartial').html(result);
},
error: function (e) {
alert(e);
}
});
});
我发现的唯一问题是出现此错误
未捕获类型错误:无法读取未定义的属性“id”
在这一行currentlySelectedNodeGUID = selectedNode.id;
。
但是数据就在那里,data.node
确实包含一个 id 属性,并且它确实有一个值,该值被分配给 currentlySelectedNodeGUID
。
我几乎不知道为什么会发生这种情况。请问有什么帮助吗?
最佳答案
当您调用refresh()
时,您当前选择的节点将被取消选择,这会触发changed
事件。当没有选择节点时,data.node
为 null
(或 undefined
)。这就是为什么 data.node.id
也是 undefined
的原因。树刷新后,节点再次被选中,这会再次触发 changed
- 这次节点对象可用。
因此,在发送 ajax 查询之前,您需要检查是否确实选择了一个节点。
关于javascript - jsTree 在第二次刷新时失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38239522/