我在laravel中设置了一个分层的mysql表,如下所示(带有示例数据):
id | name | parent_id
1 | test | 0
2 | test 2 | 0
3 | test | 2
我使用带有 dnd 和状态插件的 JSTree 显示这些数据。问题是,当您使用 dnd(允许拖动/编辑列表)来移动列表对象时,还需要更新 sql 表,以便编辑是永久性的,并且在刷新时不会丢失。
我不知道从哪里开始?有没有人有任何提示或可以帮助解决方案?
我相信我需要让 javascript 操作与 laravel 事件/侦听器交互,以便它动态更新 sql 表。
您需要以某种方式将操作发送到服务器,这通常使用 ajax 调用来完成。您将侦听 move_node
事件,然后从树数据中获取所需的相应数据。以下是一些可能会有所帮助的代码:
var treeData = {your tree data};
$($tree).jstree({
core: {
data: treeData,
check_callback: function (op, node, parent, position, more) {
switch (op) {
case 'move_node':
return moveNode(node, parent, position, more);
case 'copy_node':
return copyNode(node, parent, position, more);
}
},
multiple: false
},
plugins: ['dnd']
}).on('copy_node.jstree', function(e, data) {
$app.debug('copy_node completed', data);
}).on('move_node.jstree', function(e, data) {
// this is where you connect to the server!
doMoveNode(data);
});