2011-12-15 2 views
1

Пожалуйста, будь нееврейским, я изучаю Ext4.Ext4 Component Show

Когда я запускаю код ниже, я получаю эту ошибку: Uncaught TypeError: Cannot call method 'getCount' of undefined. Когда я прокомментирую код: list.show() в NS.view.ImplementationStatus.Legend ошибка исчезает. Поэтому я думаю, что это имеет какое-то отношение к этому, но я не понимаю, откуда это взялось.

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

Рекомендуемый способ расширения классов Ext компонентов заключается в использовании функции InitComponent, как вы используете, но в конце концов вы должны вызвать this.callParent(arguments);

Вы можете увидеть этот шаблон, используемый во всех видах в руководствах: http://docs.sencha.com/ext-js/4-0/#!/guide/application_architecture

+0

Я думаю, что ты прав. Другой способ - путь ExtJS 3.x. И так как я сказал, что это для ExtJS 4.x, я дам вам правильный ответ. – Ryan

1

Прежде всего, когда вы создаете переопределения для таких методов, как init, initComponent, вы также должны вызывать метод из исходного класса. Например:

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

После завершения методов ошибка больше не отображается.

+0

Я думаю, что это 3-х мерное занятие. Пожалуйста, см. Мой ответ ниже для более нового рекомендованного подхода. – dbrin

Смежные вопросы