Ext4组件显示

时间:2011-12-15 17:13:04

标签: javascript extjs javascript-framework

请你是异教徒我正在学习Ext4。

当我运行下面的代码时,我收到此错误:Uncaught TypeError: Cannot call method 'getCount' of undefined。当我在NS.view.ImplementationStatus.Legend中注释掉代码:list.show()时,错误消失了。所以我认为这与此有关,但我真的不明白这会来自哪里。

Ext.define('NS.controller.ImplementationStatuses', {
    extend: 'Ext.app.Controller',
    stores: ['ImplementationStatuses'],
    models: ['ImplementationStatus'],
    views: ['ImplementationStatus.Legend'],
    init: function() {
        var view = Ext.widget('statusLegend');
    }
});

Ext.define('NS.view.ImplementationStatus.Legend', {
    extend: 'Ext.window.Window',
    alias : 'widget.statusLegend',
    views: ['ImplementationStatus.List'],
    initComponent: function() {
        console.log("Initializing NS.view.ImplementationStatus.Legend");

        // This creates the list of statuses
        var list = Ext.create('NS.view.ImplementationStatus.List', {});
        list.show();

        // Define the list of items
        this.items = [list];
    }
});

Ext.define('NS.view.ImplementationStatus.List', {
    extend: 'Ext.panel.Panel',
    alias : 'widget.statusList',
    initComponent: function() {
        console.log("Initializing NS.view.ImplementationStatus.List");
    }
});

2 个答案:

答案 0 :(得分:2)

扩展Ext Component类的推荐方法是使用initComponent函数,但最后需要调用this.callParent(arguments);

您可以在指南中的所有视图中看到此模式:http://docs.sencha.com/ext-js/4-0/#!/guide/application_architecture

答案 1 :(得分:1)

首先,当您为init,initComponent等方法创建覆盖时,还必须从原始类调用方法。例如:

Ext.window.Window.prototype.initComponent.apply(this, arguments);

完成方法后,错误不再显示。