如何根据目标父元素重命名可排序的嵌套元素?

How can I rename a sortable nested element based on target parent element?

如果我有一个像这样的嵌套列表:

root:
- A
    - A1
    - A2
        - A2.1
            - A2.1.1
- B
    - B1
    - B2
- C

如果我将一个元素拖到另一个列表中,我希望保持与顶部元素相同的命名。比如我把A1下面的东西拖到C里,A1应该重命名为C,因为新的父元素的名字是C。如果我把一个元素拖到A2.1.1里,它应该变成A2.1.1.1。像这样:

root:
- A
    - A2
        - A2.1
            - A2.1.1
                - A.2.1.1.1
- B
    - B1
    - B2
- C
    - C1

这是一个示例 JS fiddle:http://jsfiddle.net/Lqttf/37/

我知道在 beforeMove 和 afterMove 函数回调中,它为您提供了一个 arg 参数,您可以在其中获取 targetParent。但是,targetParent 只给我该目标中的子项数组,无法获取父项本身的名称或对象。

Knockout 提供了对结构变化和重命名项目做出反应所需的一切。我提供了一个使用更简单的命名结构的示例,您可以修改它以按照您想要的方式工作。

ko.computed(function () {
  var myName = this.name(), children = this.children();
  ko.utils.arrayForEach(children, function (child, index) {
    child.name(myName + '.' + (index+1));
  });
}, this);

http://jsfiddle.net/Lqttf/47/