0

次のコードは をスローし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'] });

私はおそらく初歩的な何かを見逃しています..これをどのように修正すればよいですか?

4

1 に答える 1

1

this.callParent(arguments) を呼び出さずにストア コンストラクターをオーバーライドします。

于 2013-05-06T14:27:47.573 に答える