2017-08-08 73 views
2

我使用ExtJS 5.1.1并在基于MVC模式的另一个演示应用程序上锻炼。为什么不能显示视图?

bootstrapping有什么问题? 菜单面板未显示,也未打印消息console.log

demo-app的文件结构;

index.html 
app.js 

app/ 
    view/ 
    -- DBMainView 
    -- DBMenuPanel 

app.js:

Ext.Loader.setConfig({ 
    enabled: true 
}); 

Ext.application({ 
    views: ['DBMainView', 'DBMenuPanel'], 
    name: 'MultiDB', 

    launch: function() { 
     console.log('this is app.js'); 
     Ext.create('MultiDB.view.DBMainView'); 
    } 
}); 

DBMainView.js

Ext.define('MultiDB.view.DBMainView', { 
    extend: 'Ext.container.Viewport', 
    alias: 'widget.dbmainview', 
    requires: [ 
     'MultiDB.view.DBMenuPanel', 
     'Ext.panel.Panel' 
    ], 

    layout: 'border', 
    split: true, 

    items: [{ 
     xtype: 'dbmenupanel', 
     region: 'west' 
    }], 

    initComponent: function() { 
     console.log('this is main view'); 
    } 
}); 

DBMenuPanel.js

Ext.define('MultiDB.view.DBMenuPanel', { 
    extend: 'Ext.panel.Panel', 
    alias: 'widget.dbmenupanel', 
    width: 150, 
    collapsed: true, 
    collapsible: true, 

    initComponent: function() { 
     console.log('this is menu view'); 
    } 
}); 

回答

3

您在initComponent方法中缺少this.callParent();。您可以覆盖initComponent,但您始终必须调用父方法,以便组件正确初始化。

The initComponent method must contain a call to callParent in order to ensure that the parent class' initComponent method is also called.

+0

尊敬的@ scebotari66感谢您的时间..现在它工作正常! BTW我添加了'this.callParent(arguments);'以同时查看*(MainView,MenuPanel)*然后它已经工作。以及我试图只在MainView类中添加,但它给了这个错误:'[W] XTemplate评估异常:无法读取null属性'项目'我希望我做了正确的设置? –

+1

是的,你需要'this.callParent'这两个类。当只添加到主视图时,由于菜单面板尚未正确初始化,并且主视图无法将其识别为子组件,所以出现错误。你可以跳过'arguments'参数,因为函数没有参数。 – scebotari66