0
以下代碼將拋出Uncaught TypeError: Cannot call method 'getRootNode' of undefined
。據我所知,我的商店沒有正確註冊,但我無法弄清楚爲什麼。嘗試在TreePanel上使用存儲失敗
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'] });
我可能缺少一些基本的東西..我該如何糾正這個問題?
也許是因爲您覆蓋了沒有callParent的構造函數? – 2013-05-05 21:02:49
這當然是一個問題,會建議你發佈答案。如果你沒有做任何事情,請不要覆蓋它。如果是,請調用父級並確保傳遞配置對象。 – 2013-05-05 21:30:07
@AmitAviv我打算,只是在進行中......問題是重寫沒有callParent的構造函數。你想發佈答案,所以我可以獎勵你的積分回答:) – user918176 2013-05-06 14:15:44