尝试在TreePanel上使用存储失败

时间:2013-05-05 20:03:13

标签: extjs

以下代码抛出Uncaught TypeError: Cannot call method 'getRootNode' of undefined。据我所知,我的商店没有正确注册,但我无法弄清楚原因。

当我在小部件的initComponent()或其他任何地方测试时,Ext.data.StoreManager.lookup()返回undefined。尝试强制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'] });

我可能错过了一些基本的东西..我该如何纠正这个?

1 个答案:

答案 0 :(得分:1)

覆盖存储构造函数而不调用this.callParent(arguments)