【发布时间】:2015-08-27 17:24:50
【问题描述】:
https://github.com/dbushell/Nestable 我正在使用 David Bushell 的上述源代码来创建一个可拖放编辑的嵌套列表。
我尝试编辑的“可排序”数据库有 4 列:id、name、parent_id、display_order
(`id`, `name`, `parent_id`, `display_order`)
(1, 'item 1', '2', 1),
(2, 'item 2', '0', 3),
(3, 'item 3', '', 1),
(4, 'item 4', '0', 2),
(5, 'item 5', '0', 1),
(6, 'item 6', '', 1),
(7, 'item 7', '', 1),
(8, 'item 8', '1', 1),
(9, 'item 9', '1', 2);
生成了两个有序列表,一个具有 parent_id 的所有整数值,其中 0 是顶层,一个顶层具有 parent_id=' '。上述数据库的输出显示在 JSFiddle 上:https://jsfiddle.net/c9m5r5p2/6/
我无法从 github 源添加 jquery.nestable.js,导致无法拖放。虽然添加了生成输出的函数
var updateOutput = function(e)
{
var list = e.length ? e : $(e.target),
output = list.data('output');
if (window.JSON) {
output.val(window.JSON.stringify(list.nestable('serialize')));//, null, 2));
} else {
output.val('JSON browser support required for this demo.');
}
};
// output initial serialised data
updateOutput($('#nestable').data('output', $('#nestable-output')));
updateOutput($('#nestable2').data('output', $('#nestable2-output')));
但是,假设我将“项目 8”拖到顶层并让“项目 7”成为“项目 4”的子级,“输出 1”和“输出 2”将是:
output 1: [{"id":2,"children":[{"id":1},{"id":9}]},{"id":8},{"id":4,"children":[{"id":7}]},{"id":5}]
output 2: [{"id":3},{"id":6}]
由于缺乏关于 JQuery 的知识,我不知道如何将这些新值传递给(php?)函数并编辑数据库。如果没有“保存”按钮,这也可能吗?我很可能正在寻找一个简单的电话。
【问题讨论】:
-
一个问题 - 如果您总是要使用一些嵌套结构并在数据库之间来回利用 JSON 序列化,那么您为什么还要费心尝试保存值的扁平层次结构表示在 MySQL 中与仅存储整个显示元素的结果 JSON 相比。您可以简单地从数据库中检索 JSON 并使用它在初始页面加载时重新创建嵌套控件。