如果我有一个嵌套列表,如:
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小提琴样本:http://jsfiddle.net/Lqttf/37/
我知道在beforeMove和afterMove函数回调中它提供了一个arg参数,在其中你可以得到targetParent。但是,targetParent只给出了该目标中的子数组,无法获取父本身的名称或对象。
答案 0 :(得分:2)
Knockout提供了对结构更改和重命名项目做出反应所需的一切。我提供了一个使用更简单的命名结构的示例,您可以修改它以按照您想要的方式工作。
ko.computed(function () {
var myName = this.name(), children = this.children();
ko.utils.arrayForEach(children, function (child, index) {
child.name(myName + '.' + (index+1));
});
}, this);