下面的代码抛出Uncaught TypeError: Cannot call method 'getRootNode' of undefined
. 据我所知,我的商店没有正确注册,但我不知道为什么。
undefined
当我在小部件的 initComponent() 或其他任何地方测试Ext.data.StoreManager.lookup() 时,它会返回。尝试强制 storeID,没有区别。其余代码有效,因为如果我强制root: {}
小部件正常工作。
应用程序.js:
Ext.require('Ext.container.Viewport'); Ext.application({ requires: ['Ext.container.Viewport'], name: 'IW', appFolder: '/static/js', models: ['Page'], stores: ['Pages'], controllers: ['Pages'], views: ['page.PageTree'], launch: function() { Ext.create('Ext.container.Viewport', { layout: 'absolute', items: [ { xtype: 'pagetree', title: 'Pages', x: 20, y: 20, width: 300, height: 300 } ] }); } });
商店/Pages.js:
Ext.define('IW.store.Pages', { extend: 'Ext.data.TreeStore', model: 'IW.model.Page', autoLoad: true, proxy: { type: 'rest', url: '/api/pages', reader: { type: 'json', root: 'pages', successProperty: 'success' } }, root: { expanded: true, id: 'frontPage', text: 'Front Page' }, constructor: function() { console.log('Constructor of IW.store.Pages'); }
});
视图/页面/PageTree.js:
Ext.define('IW.view.page.PageTree', { extend: 'Ext.tree.Panel', alias: 'widget.pagetree', width: 640, rootVisible: true, // Does not work store: 'Pages', // Works //root: {}, initComponent: function() { //this.store = Ext.data.StoreManager.lookup(this.store); //console.log(this.store); // Undefined this.callParent(); } });
控制器/Pages.js:
Ext.define('IW.controller.Pages', { extend: 'Ext.app.Controller', init: function() { console.log('Init controller'); this.control({ 'pagepagetree': { // } }); } });
模型/Page.js:
Ext.define('IW.model.Page', { extend: 'Ext.data.Model', fields: ['id', 'wiki', 'path', 'title', 'create_user', 'content', 'readacl', 'writeacl', 'adminacl'] });
我可能遗漏了一些基本的东西。我应该如何纠正这个?