【问题标题】:Why can not display Views?为什么不能显示Views?
【发布时间】:2017-08-08 13:28:14
【问题描述】:

我正在使用 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');
    }
});

【问题讨论】:

    标签: model-view-controller extjs view


    【解决方案1】:

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

    initComponent 方法必须包含对 callParent 的调用,以便 确保父类的 initComponent 方法也被调用。

    【讨论】:

    • 亲爱的@scebotari66 感谢您抽出宝贵时间.. 现在一切正常!顺便说一句,我已将 this.callParent(arguments); 添加到两个视图 (MainView, MenuPanel) 中,然后它就起作用了。我也尝试只在 MainView 类上添加,但它给出了这个错误:[W] XTemplate evaluation exception: Cannot read property 'items' of null我希望,我做了正确的设置?
    • 是的,这两个类都需要this.callParent。当您只添加到主视图时,您会收到错误,因为菜单面板尚未正确初始化,并且主视图无法将其识别为子组件。您可以跳过 arguments 参数,因为该函数没有参数。
    猜你喜欢
    • 2021-10-08
    • 2021-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-06
    • 2021-12-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多