次のコードは をスローしUncaught TypeError: Cannot call method 'getRootNode' of undefined
ます。私の知る限り、私のストアは正しく登録されていませんが、その理由がわかりません。
Ext.data.StoreManager.lookup() はundefined
、ウィジェットの initComponent() またはその他の場所でテストすると返されます。storeID を強制しようとしましたが、違いはありません。root: {}
強制するとウィジェットが正しく動作するため、残りのコードは機能します。
App.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'] });
私はおそらく初歩的な何かを見逃しています..これをどのように修正すればよいですか?