2015-10-16 3 views
2

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

Uncaught TypeError: Cannot read property 'getRoot' of undefined

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

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

Модель

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 
    }] 
}); 
+0

Попробуйте использовать такой магазин - store: Ext.data.StoreManager.lookup ('myStore'). Чтобы использовать хранилище, как и вы, магазин должен быть зарегистрирован в приложении - f.e. используя конфигурацию хранилища Controller. – yorlin

ответ

-1

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

store: Ext.create('ADMINSEG.store.MntOpciones') 
+1

Это неправда и даже плохая практика. Просто сделайте то, что говорит Йорлин в комментарии к вашему OP. Получите контроллер, используемый с представлением, или контроллер приложения и добавьте хранилище 'MntOpciones' в' store array'. Это скажет, что хранилище существует. После этого вы можете использовать 'store: [storeId]' на вашем представлении, где в вашем случае storeId является 'myStore'. – Tarabass

+0

Если вы хотите использовать общий магазин, сделайте, как указано в комментариях выше. Если вы хотите создать уникальное хранилище для каждого вида, создайте хранилище в методе initComponent и назначьте его древовидному представлению. –

Смежные вопросы