递归存储 parent 个节点的标题直到根

Recursively store parent nodes' titles up to root

我有一个 table 看起来像这样:

因此,任何不是文件夹的条目都有对应的输入标签。现在我正在为 renderColumn 方法中的输入设置 name 属性,如下所示:

const node = data.node;
const $tdList = $(node.tr).find('>td');

if (node.isFolder()) {
  $tdList.eq(1).empty();
} else {
  const $input = $tdList.eq(1).find('input');
  $input.attr('name', `${node.parent.title}_${node.title}`);
  $input.attr('value', node.data.value);
}

但它所做的只是有效地存储 parent 的标题。有什么办法可以递归地将所有 parent 的标题存储到根目录中,例如,在 version 列中我有 input[name="categoryCell__version"],然后在 backgroundColor 中— categoryCell_configuration_backgroundColor,等等?

你可以递归地做。

function buildTitle(node) {
  if (node.parent.className !== 'alex-node`) { // just an example, change the condition to something else
    return '';
  } else {
    return buildTitle(node.parent) + node.parent.title + '__';
  }
}

(你需要 trim 下划线,但这很简单)