Как связать данные с узлом в jstree?

<code>$("#ifTree").jstree({
            "plugins" : ["themes","html_data","ui","crrm"], 
            "themes" : {
                    "theme" : "apple",
                    "dots" : true,
                    "icons" : false
            }           
    });

    $("#createIf_c").click(function () { 
        $("#ifTree").jstree("create",null,"inside",  { "data" :{ title:"if",value:"expression"} },
                function() {}, true);
    });
$("#display").click(function(){
            var a = $.jstree._focused().get_selected();
            alert(a.attr("value"));
    });
</code>

В этом коде выше я создал jstree, и после нажатия кнопки с идентификатором #createIf_c я добавляю узел с заголовком & quot; if & quot; но поскольку я хочу, чтобы с этим узлом было связано больше данных, я добавил к нему больше атрибутов при создании узла. Далее, когда я пытаюсь получить доступ к этим связанным данным, здесь & quot; значение & quot; затем я получаю предупреждение "неопределено". Так есть ли другой способ связать данные с узлом? или другой способ доступа к связанным данным узла - это jstree? .. помогите пожалуйста ....

Ответы на вопрос(7)

Proper way to associate a data to node is as follows:

Если вы добавляете больше данных, то есть атрибут, тогда упоминаются все атрибуты (имя, значение) в"attr"  имущество

& Quot;attr& quot;: {attributeName1: & quot; attributeValue1 & quot ;, attributeName2: & quot; attributeValue2 & quot; ......}

 $("#createIf_c").click(function () { 
 $("#ifTree").jstree("create",null,"inside",
   { "data" : "testNodeName", 
      "attr": { title:"if",value:"expression"} },  function() {}, true);
});
Решение Вопроса

Самый простой способ сделать это так же, как добавить атрибут к элементу html, т.е.

    var node = $.jstree._focused().get_selected(); //get the selected node or which ever you want the data to be associated with
    node.attr("expression","xyz"); //add an attribute (name,value) here, name-expression and value-xyz

Пожалуйста, обратитесь к авторуответ.

Вы можете редактировать информацию$('#tree').jstree(true).get_node("some_node_id")и опубликовать дополнительные данные как JSON$('#tree').jstree(true).get_json("some_node_id").

You can add anything you want to the data object. Like:
{ "id" : "some_node_id" "text" : "some node", ... "data" : { "foo" : "bar", "example_array" : ["1",2,true], "obj" : {"asdf":"asdf1"}  } ...

And later on you can retrieve it like so:
$('#tree').jstree(true).get_node("some_node_id").data.obj.asdf; // this would equal "asdf1"
$('#tree').jstree(true).get_node("some_node_id").data.example_array; // this would be an array: ["1",2,true]

Setting other values is just as simple - you are working with a normal object:
$('#tree').jstree(true).get_node("some_node_id").data.obj.asdf = "some other value";
$('#tree').jstree(true).get_node("some_node_id").data.example_array = "I do not want this an array anymore";
$('#tree').jstree(true).get_node("some_node_id").data.obj.new_property = 1024;
div id="tree_1" class="tree-demo">
    <ul>
        <li data-jstree='{ "opened" : false }' id="c67"> Sıcak İçecekler
            <ul>
                <li data-jstree='{ "type" : "file", "selected" : false }' id="500">Çay</li>
                <li data-jstree='{ "type" : "file", "selected" : false }' id="501">Fincan Çay</li>

            </ul>
        </li>
        <li data-jstree='{ "opened" : true }' id="c68"> Soğuk İçecekler
            <ul>
                <li data-jstree='{ "type" : "file", "selected" : true }' id="514">Ayran</li>
                <li data-jstree='{ "type" : "file", "selected" : true }' id="515">Kola</li>
                <li data-jstree='{ "type" : "file", "selected" : true }' id="516">Meyveli Gazoz</li>                    
            </ul>
        </li>
    </ul>
</div>

этот HTML очень подходит для пользовательских идентификаторов, если вы хотите решить его с помощью<ul> а также<li> элементы.

Используя jstree v3, вы можете связать атрибуты с помощью плагина следующим образом: -

// create instance
var inst = $("#tree-id").jstree();
// create node definition
var node = {
    id: "new_node_id",
    text: "New Node",
    li_attr: { "data-files": "false" },
    a_attr: { "data-url": "some_url" }
};
// create node
var newNodeId = inst.create_node("#", node);

Ожидаемый формат параметра узла (из исходных комментариев):

// Expected format of the node (there are no required fields)
//{
//  id: "string" // will be autogenerated if omitted
//  text: "string" // node text
//  icon: "string" // string for custom
//  state: {
//      opened: boolean  // is the node open
//      disabled: boolean  // is the node disabled
//      selected: boolean  // is the node selected
//  },
//  children: []  // array of strings or objects
//  li_attr: { }  // attributes for the generated LI node
//  a_attr: { }  // attributes for the generated A node
//}

и ожидаемый форматcreate_node параметры:

// create_node(par, node, pos, callback, is_loaded)

// par (object) - the parent node (to create a root node use "#" (string) or `null`)
// node (object) - the data for new node (valid JSON object, or a simple string with the name)
// pos (object) - index to insert the node, "first" and "last" are supported, default is "last"
// callback (function) - a function to be called once the node is created
// is_loaded (boolean) - internal argument indicating if the parent node was succesfully loaded

// returns (string) - the ID of the newly create node

To associate data from HTML definition:

Если вы хотите связать данные, используя HTML-определение дерева, используйте:

<li id="treesiteadmin-serverStatus" data-ic='{"form":"site.serverstatus"}' data-jstree='{"icon":"glyphicons glyphicons-server"}'>Stato del server</li>

& Quot; данные & quot; Свойство выбранного в данный момент узла будет:

{"jstree":{"icon":"glyphicons glyphicons-server"},"ic":{"form":"site.serverstatus"}}

Посмотреть результат - & quot; данные & quot; свойство выбранного узла

Вы можете поместить свои дополнительные данные в JSON node.datathis is not documented
enter image description here

 08 мар. 2016 г., 17:33
Потрясающие. Это именно то, что я искал
 20 июн. 2017 г., 14:16
Вы должны исправить опечатку в вашем ответе.dataнеdate, Я не исправляю себя, потому что stackoverflow нужно по крайней мере 6 символов, чтобы принять модификацию ...

Ваш ответ на вопрос