2013-05-05 24 views
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'] }); 

我可能缺少一些基本的東西..我該如何糾正這個問題?

+0

也許是因爲您覆蓋了沒有callParent的構造函數? – 2013-05-05 21:02:49

+0

這當然是一個問題,會建議你發佈答案。如果你沒有做任何事情,請不要覆蓋它。如果是,請調用父級並確保傳遞配置對象。 – 2013-05-05 21:30:07

+0

@AmitAviv我打算,只是在進行中......問題是重寫沒有callParent的構造函數。你想發佈答案,所以我可以獎勵你的積分回答:) – user918176 2013-05-06 14:15:44

回答

1

您在不調用this.callParent(參數)的情況下重寫store構造函數