Меню YUI: создание многоуровневого меню на основе атрибутов объекта json - PullRequest
0 голосов
/ 21 августа 2009

У меня есть объект json, который имеет свойства типа и продукта. Я ищу способ перебрать элементы и организовать их в многоуровневое меню, используя меню YUI, чтобы первый уровень группировал их по типу, а затем второе меню группировал их по продукту.

JSON выглядит примерно так:

[{ "productId":1, "typeId": 1, "productName": "test", "typeName": "old", "itemId": 1, "itemName": "item1"},
{ "productId":2, "typeId": 2, "productName": "test2", "typeName": "new", "itemId": 2, "itemName": "item2"},
{ "productId":2, "typeId": 1, "productName": "test2", "typeName": "old", "itemId": 3, "itemName": "item3"}]

Я хотел бы иметь возможность циклически проходить по элементам и добавлять их в правильное подменю с помощью циклов, но способ, которым структурировано меню YUI, не кажется простым способом сделать это. Результирующая структура меню будет выглядеть примерно так:

  • старый
    • тест
      • item1
    • test2
      • item3
  • новый
    • test2
      • item2

уточнение вопроса: Перебирать и создавать отдельные элементы достаточно просто:

for ( var i in obj )
{
    menu.addItem(obj[i].itemName);
}

Что мне нужно сделать, так это циклически создавать подменю, когда они не существуют, и добавлять элементы в подменю. Все сказанное может содержать до 200 элементов, которые необходимо отсортировать в этих подменю, чтобы в каждой ветви было несколько элементов. Я ищу простой способ сделать рабочий процесс проверки / создания / добавления.

1 Ответ

0 голосов
/ 21 августа 2009

Прежде чем пытаться создать список, отсортируйте структуру данных JSON со стабильной сортировкой в ​​следующем порядке:

  1. Имя элемента (необязательно)
  2. Наименование товара
  3. Имя типа

Это упорядочит данные в том же порядке, как если бы вы выполняли поиск дерева в глубину. Где

  • Старый
    • Тест 1
      • Позиция 3
      • Элемент 1
    • Тест 2
      • Элемент 2
  • Новый
    • Тест 2
      • Позиция 4

становится

Old > Test 1 > Item 1
Old > Test 1 > Item 3
Old > Test 2 > Item 2
New > Test 2 > Item 4

Обратите внимание, что изменение в первом или втором столбце указывает на необходимость создания новой категории или подкатегории (соответственно).

Не связанный с этим вопросом, вы можете рассмотреть другой метод отображения данных. С точки зрения пользователя, прокрутка ряда иерархических выпадающих меню, содержащих более 200 элементов, неизбежно будет болезненной.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...