Masalah jstree saat menggunakan refresh_node di node non-root

Saya menggunakan jstree untuk menampilkan beberapa node (termasuk plugin DnD, Type dan Contextmenu). Saya mendapatkan keseluruhan pohon tanpa masalah, menunjukkannya dengan benar dan saya dapat memilih node mana pun, tetapi, setelah menggunakan operasi pembaruan (dengan panggilan Ajax ke server) pada satu node, saya ingin menyegarkan ini (dan hanya ini) simpul. operasi refresh_node(myNode) adalah yang saya inginkan, dan panggilan Ajax berfungsi dengan baik dan hanya memberi saya bagian subpohon yang saya perlukan.

Namun, ketika jstree mencoba menggambar ulang, saya mendapatkan kesalahan tentang variabel yang tidak ada. Saya men-debugnya dan saya perhatikan bahwa array induk dari beberapa node telah menghilang.

Saya menggunakan format JSON alternatif untuk memuat pohon saya, dengan konfigurasi ini:

core{
    multiple: false,
    data {
        url: "my_url_string_to_server",
        data: function(node) { return { id: nodeId, /*other params*/ } }
    }
}
/*other plugins config*/

dan panggilan saya ke refresh_node:

//nodeId is a string with the name of the node I want to refresh.
var node = $.jstree.reference('.tree-data').get_node(nodeId);
$.jstree.reference('.tree-data').refresh_node(node);
//I tried refresh_node(nodeId) too, with the same error result.

Semua simpul pohon saya adalah: { "id", "UniqueId", "parent": "Parent" }, "text", "Name" }, "state": { }, "type": "type" "li_attr" : { { "judul", "judul" }, { "kelas", "kelas" } } "a_attr": { { "kelas", "kelas" } }, "data": { { "dbid", "Id " }, { "dbparent", "ParentId" }, { "status", "statusId" } } }

seperti yang dinyatakan dalam dokumentasi jstree (lihat 'format JSON alternatif')

mengembalikan daftar mereka (node ​​yang diperlukan dan semua anak) sebagai hasil dari panggilan ajax (tidak peduli apakah itu panggilan untuk node root atau node non-root lainnya)

Tolong, bisakah Anda memberi tahu saya apa yang saya lakukan salah?

Terima kasih banyak sebelumnya.


person Tistkle    schedule 29.07.2019    source sumber


Jawaban (1)


Saya menemukan masalah: ketika Anda memanggil dengan id selain id root ("#"), segarkan kesepakatan dengan node anak dari id node. Metode saya mengembalikan node root dan node anak, dan itu salah. Tidak ada fungsi untuk memperbarui satu node langsung dari DB, namun masalah ini menunjukkan caranya untuk memperbaruinya dari js, jadi, saya akan mencoba memperbaruinya dengan mendapatkan status baru melalui panggilan ajax dan menggunakan respons itu untuk memperbarui semua data dan menggambar ulang secara manual.

Semoga ini bisa bermanfaat bagi orang lain.

Terima kasih semua!

person Tistkle    schedule 31.07.2019