0

下面的代码抛出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'] });

我可能遗漏了一些基本的东西。我应该如何纠正这个?

4

1 回答 1

1

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

于 2013-05-06T14:27:47.573 回答