Как получить доступ к атрибуту данных узла внутри функции сортировки jstree? - PullRequest
1 голос
/ 04 мая 2019

Введение

Я отображаю дерево, используя jquery библиотека плагинов для дерева jstree.

1007 * Expectation * Поскольку я имею в виду файлы - они имеют расширения - поэтому упорядочивание по имени не очень полезно. Казалось бы, сортировка по типу лучше всего. Для этого я добавил атрибут данных item-sort-value, который составляет extension + fileName + uuid. Error

Я бы хотел отсортировать дерево по этому полю data-item-sort-value, но отобразить стандартное имя файла в дереве. Пока я не могу получить его значение внутри функции сортировки .

Я тоже пробовал:

  • a1.getAttribute ('data-item-sort-value') ... получил TypeError: a1.getAttribute is not a function
  • a1.a_attr ('data-item-sort-value') ... получил TypeError: a1.getAttribute is not a function
  • a1.data ('item-sort-value') ... получил TypeError: a1.data is not a function
  • a1.node.data ('item-sort-value') ... получил TypeError: a1.data is not a function

Мой код

'sort': function(a, b)
{
    let a1 = this.get_node(a);
    let b1 = this.get_node(b);

    if (a1.node.attr('item-sort-value') === b1.node.attr('data-item-sort-value'))
    {
        return (a1.node.attr('data-item-sort-value') > b1.node.attr('data-item-sort-value')) ? 1 : -1;
    }
    else
    {
        return (a1.icon > b1.icon) ? 1 : -1;
    }
}

Консольный вывод

enter image description here

1 Ответ

1 голос
/ 04 мая 2019

Вот рабочая функция сортировки, которая использует значения атрибутов данных.

'sort' : function(a, b)
{
    let a1 = this.get_node(a);
    let b1 = this.get_node(b);
    let isv_a1 = a1.a_attr['data-item-sort-value'];
    let isv_b1 = b1.a_attr['data-item-sort-value'];

    return (isv_a1 > isv_b1) ? 1 : -1;
}
...