javascript - jsTree 在第二次刷新时失败

标签 javascript jquery jstree

我正在使用 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.nodenull(或 undefined)。这就是为什么 data.node.id 也是 undefined 的原因。树刷新后,节点再次被选中,这会再次触发 changed - 这次节点对象可用。

因此,在发送 ajax 查询之前,您需要检查是否确实选择了一个节点。

关于javascript - jsTree 在第二次刷新时失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38239522/

相关文章:

javascript - 带有分割工具提示的 1 个图表中的多个饼图 Highcharts.js

jquery - 检查 div 内的复选框或单选按钮是否被选中

jquery - 如何更改 yajra dataTable 搜索过滤系统?

javascript - 在 ajax 调用中替换 jstree 节点

javascript - 谷歌API反向地理编码

javascript - 同时在 Highcharts 中显示多个工具提示

javascript - 我的 jQuery slider 无法正常工作

php - Laravel 5.5 在多次尝试后在 ajax 调用上不断收到 419 post 错误

javascript - 如何在jsTree中给子节点一个带有JSON的 'id'

javascript - 如何获取jsTree中所选节点的id?