JSTree's data.rslt.obj.text()返回一个文本数组,而不是所需节点的文本

JSTree's data.rslt.obj.text() returns an array of text rather than the text from the desired node

本文关键字:文本 数组 节点 一个 data rslt JSTree 返回 text obj      更新时间:2023-09-26

我试图让jstree只返回我正在重命名的节点的文本。相反,它返回当前节点以及所有子节点的名称的串联列表。我已经将jstree配置为按需加载。我该怎么做才能将上下文菜单返回的用于重命名的文本限制为仅限于我试图重命名的节点?非常感谢!以下是完整的jstree代码:

        $("#RequirementsTree")
    .bind("select_node.jstree", function(event, data) {
            if(is_requirement_node(data))
            {
                var id = data.rslt.obj.attr("id");
                if(id != null)
                {
                    $("#RequirementsTree").jstree('close_all')
                }
                else {
                    alert("Requirement node select error");
                }
            }
     })
    .bind("create.jstree", function(e, data) {
        // Ajax call to Server with parent node id and new node text
        $.ajax({
            type: "POST",
            url: '@Url.Content("~/RMS/insertRequirementNode")',
            data: {
                    ParentID : ParentNode,
                    ChildNodeText : data.rslt.obj.text()
            },
            success: function(new_data) {
                $.jstree._reference($("#RequirementsTree")).refresh(-1);
                ParentNode = null;
                data = null;
                return new_data;
            }   
        });
        ParentNode = null;
        if (data.rslt.parent == -1) {
            alert("Can not create new root directory");
            // Rollback/delete the newly created node
            $.jstree.rollback(data.rlbk);
            return;
        }
        BranchReqFLag = null;
    }).bind("rename.jstree", function(e, data) {
            $.ajax({
                type: "POST",
                url: '@Url.Content("~/RMS/updateRMSHierarchyNode")',
                data: {
                    NodeID: ParentNode,
                    NodeText: data.rslt.obj.text()
                },
                success: function() {
                    ParentNode = null;
                    data = null;
                }
            });
    }).jstree({
        json_data: {
            data: RBSTreeModel,
            ajax: {
                type: "POST",
                data: function (n) {
                    return {
                        NodeID: n.attr("id").substring(4),
                        Level: n.attr("name").substring(7)
                    };
                },
                url: function (node) {
                    return "/Audit/GetRequirementsTreeStructure";
                },
                success: function (new_data) {
                    return new_data;
                }
            }
        },
        contextmenu: {
            items: function($node) {
                    return {
                        createItem : {
                            "label" : "Create New Branch",
                            "action" : function(obj) { 
                                this.create(obj); 
                                BranchReqFlag = "Branch"; 
                                ParentNode = obj.attr("id").substring(4);
                            },
                            "separator_before" : true
                        },
                        renameItem : {
                            "label" : "Rename Branch",
                            "action" : function(obj) { 
                                this.rename(obj);
                                BranchReqFlag = "Branch";
                                ParentNode = obj.attr("id").substring(4);
                            },
                            "separator_before" : true
                        }
                    };
            }
        },
        plugins: ["themes", "json_data", "ui", "crrm", "contextmenu"]
    });
});

data.rslt.new_name保存输入的新名称。如果您使用Chrome或Firebugs来检查data,您将找到大多数此类问题的答案。

...
    }).bind("rename.jstree", function(e, data) {
            $.ajax({
                type: "POST",
                url: '@Url.Content("~/RMS/updateRMSHierarchyNode")',
                data: {
                    NodeID: ParentNode,
                    NodeText: data.rslt.new_name
                },
                success: function() {
                    ParentNode = null;
                    data = null;
                }
            });
    })
...