2017-08-08 15 views
2

私はExtJS 5.1.1を使用し、MVCパターンに基づいて別のデモアプリケーションで運動しています。ビューを表示できないのはなぜですか?

ブートストラップにはどのような問題がありますか? メニューパネルは表示されておらず、メッセージは表示されません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あなたの時間をありがとうございました..今はうまくいきます!ところで、私は 'this.callParent(arguments);'を*(MainView、MenuPanel)*の両方に追加し、それがうまくいきました。また、MainViewクラスでのみ追加しようとしましたが、このエラーが発生しました: '[W] XTemplate評価例外:プロパティ 'items' of nullを読み取れません。 –

+1

はい、両方のクラスに 'this.callParent'が必要です。メインビューにのみ追加した場合、メニューパネルが正しく初期化されていないため、メインビューで子パネルとして識別できないため、エラーが発生します。関数に引数がないので、 'arguments'パラメータをスキップすることができます。 – scebotari66

関連する問題