Создание древовидного представления в Sencha ExtJs 6.0

Я пытаюсь создать простое древовидное представление на основе этого примера в ExtJs 6.0 без каких-либо успехов. Он выдает эту ошибку в консоль, и экран отображается пустым.

Uncaught TypeError: невозможно прочитать свойство getRoot неопределенного

Если кто-то может указать мне в правильном направлении, я был бы очень признателен.

Это мои файлы:

Модель

Ext.define('ADMINSEG.model.Opcion', {
extend: 'Ext.data.TreeModel',
alias : 'model.opcion',
fields: [
    {name: 'task',     type: 'string'},
    {name: 'user',     type: 'string'},
    {name: 'duration', type: 'string'},
    {name: 'done',     type: 'boolean'}
]
});

Хранить

Ext.define('ADMINSEG.store.MntOpciones', {
    extend : 'Ext.data.TreeStore',
    storeId: 'myStore',
    model: 'ADMINSEG.model.Opcion',
    proxy: {
        type: 'ajax',
        url: 'treegrid.json'
    },
    folderSort: true
});

Вид

Ext.define('ADMINSEG.view.aplicacion.Opciones', {
    extend : 'Ext.tree.Panel',
    requires : ['Ext.data.*',
                'Ext.grid.*',
                'Ext.tree.*',
                'Ext.tip.*',
                'Ext.ux.CheckColumn',
                'ADMINSEG.store.MntOpciones'],

    title: 'Core Team Projects',
    width: 500,
    height: 300,
    renderTo: Ext.getBody(),
    collapsible: true,
    useArrows: true,
    rootVisible: false,
    store: 'myStore',
    multiSelect: true,
    columns: [{
        xtype: 'treecolumn', //this is so we know which column will show the tree
        text: 'Task',
        width: 200,
        sortable: true,
        dataIndex: 'task',
        locked: true
    }]
});

person Miguelángel Cárdenas G    schedule 16.10.2015    source источник
comment
Попробуйте использовать хранилище следующим образом: хранилище: Ext.data.StoreManager.lookup('myStore'). Чтобы пользоваться магазином так, как вы это делали, то магазин должен быть зарегистрирован в приложении - т.е. используя сохраняет конфигурацию контроллера.   -  person yorlin    schedule 16.10.2015


Ответы (1)


Наконец-то нашел! Магазин в представлении должен вызываться следующим образом

store: Ext.create('ADMINSEG.store.MntOpciones')
person Miguelángel Cárdenas G    schedule 16.10.2015
comment
Это неправда, и даже плохая практика. Просто делайте то, что говорит йорлин в комментарии к вашему ОП. Получите контроллер, используемый с представлением, или контроллер приложения, и добавьте хранилище MntOpciones в файл stores array. Это сообщит фреймворку, что хранилище существует. После этого вы можете использовать store: [storeId] в своем представлении, где в вашем случае storeId равен myStore. - person Tarabass; 17.10.2015
comment
Если вы хотите общий магазин, сделайте так, как было предложено в комментариях выше. Если вам нужно уникальное хранилище для каждого представления, создайте хранилище в методе initComponent и назначьте его древовидному представлению. - person Robert Watkins; 18.10.2015