Mootools JSON (Pulling Childs, от детей) - PullRequest
1 голос
/ 17 октября 2011

Выполнено извлечение данных из JSON, но возникли проблемы при попытке извлечь дополнительную информацию из дочерних элементов (например: подпункты 1, 2 и т. Д.) В цикле.

http://jsfiddle.net/VVAFM/7/

{
    "title": "Main Title",
"items": [
    {
        "title": "Sub Title 1 "
    },
    {
        "title": "Sub Title 2",
        "items": [
            {
                "title": "Sub Item 1" //CAN'T GET MY HANDS ON THESE ITEMS!!!!!
            },
            {
                "title": "Sub Item 2"
            }
        ]
    },
    {
        "title": "Sub Title 3",
        "items": [
            {
                "title": "Sub Item 1"
            },
            {
                "title": "Sub Item 2"
            }
        ]
    },
    {
        "title": "Sub Title 4 "
    }
]
}

Вот моя попытка попытаться перетащить «подэлементы» в другой ul в уже созданном li.

    var addItemsLi = function(itemsLi){
        itemsLi.each(function(itemLi){
            var el = new Element('li'),
                name = new Element('a', {'html': itemLi.title}).inject(el);

            if (itemLi.items){
                  var ul = new Element('ul'),
                      li = new Element('li').inject(ul),
                      subItem = new Element('a', {'html': itemLi.items.title}).inject(li);
            };

                el.inject(gallery);
        });
    };

Ответы [ 2 ]

2 голосов
/ 17 октября 2011

Вот рабочая скрипка: http://jsfiddle.net/maniator/VVAFM/11/

Вы забыли перебрать массив элементов:

var addItemsLi = function(itemsLi) {
    itemsLi.each(function(itemLi) {
        var el = new Element('li'),
            name = new Element('a', {
                'html': itemLi.title
            }).inject(el);
        if (itemLi.items) {
            var ul = new Element('ul').inject(el)
            for(var i = 0; i < itemLi.items.length; i++){
                var li = new Element('li').inject(ul);
                    subItem = new Element('a', {
                        'html': itemLi.items[i].title
                    }).inject(li);
            }
        };

        el.inject(gallery);
    });
};
1 голос
/ 17 октября 2011

Вам также нужно перебрать подпункты, попробуйте:

var addItemsLi = function(itemsLi){
    itemsLi.each(function(itemLi){
        var el = new Element('li'),
            name = new Element('a', {'html': itemLi.title}).inject(el);
        if (itemLi.items){
            var ul = new Element('ul');
            itemLi.items.each(function(item){
                var li = new Element('li').inject(ul),
                subItem = new Element('a', {'html': item.title}).inject(li);
            });
        };
        el.inject(gallery);
    });
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...