Sencha Touch 2 читает древовидную структуру из JSON - PullRequest
0 голосов
/ 28 марта 2012

Я пытаюсь понять, как читать древовидную структуру, подобную этой, в правильные экземпляры модели:

{
    "name":"root"
    "kids":[
        {
            "name":"kid1",
            "kids": [...] //More kids
        },
        {
            "name":"kid2",
            "kids": [...] //More kids
        },
        {
            "name":"kid3",
            "kids": []
        },
        ...
    ]
}

Вот две модели, которые я пробовал:

Ext.define('TreeNode', {
    extend: 'Ext.data.Model',

    config: {
        fields: ['name'],
        hasMany:{model: 'TreeNode', name: 'kids'}
    }
});

//This one seems to work, but it simply loads
//generic objects into the "kids" property
//and not real model instances.
Ext.define('TreeNode', {
    extend: 'Ext.data.Model',

    config: {
        fields: ['name', 'kids']
    }
});

И хранилище:

Ext.define('TreeStructureStore', {
    extend: 'Ext.data.Store',

    config: {
        autoLoad: false,
        model: 'TreeNode',

        proxy: {
            type: 'ajax',
            url: 'simple.json',
            reader: {
                type: 'json'
            }
        }
    }
});

Не могу заставить модель и магазин работать правильно.В лучшем случае он будет читать только самый верхний элемент.Как я могу заставить его читать рекурсивно и создавать правильное дерево экземпляров модели?

1 Ответ

2 голосов
/ 31 марта 2012

http://www.sencha.com/forum/showthread.php?178848-Nested-JSON-and-hasMany-associations

Похоже на проблему, с которой я столкнулся и которую смог решить (и опубликовал ответ на форуме Sencha).Ключевым моментом здесь является использование свойства конфигурации associationKey для ассоциации hasMany, но посмотрите весь пост.

...