Como armazenar em cache a instância de subcomponentes nos componentes

Muitos dos exemplos do Sencha Touch que encontrei on-line, não se concentram no encapsulamento de visualização adequado. Assim, o Controlador ouve o evento de cada botão, mesmo que o botão esteja aninhado dentro de uma visão. Em outras palavras, os internos da visão vazam, o que nunca é uma coisa boa.

Eu encontrei um bom tutorial que incentiva você a criar visualizações significativas que escutam eventos locais e criam eventos de negócios significativos, etc.

http://miamicoder.com/2012/how-to-create-a-sencha-touch-2-app-part-2/

No entanto, uma coisa que não consegui descobrir até agora é como armazenar em cache as instâncias de componentes aninhados. Considere este exemplo:

Ext.define("NotesApp.view.NotesListContainer", {
    extend: "Ext.Container",
    alias: "widget.noteslistcontainer",

    initialize: function () {

        this.callParent(arguments);

        var newButton = {
            xtype: "button",
            text: 'New',
            ui: 'action',
            handler: this.onNewButtonTap,
            scope: this
        };

        var topToolbar = {
            xtype: "toolbar",
            title: 'My Notes',
            docked: "top",
            items: [
                { xtype: 'spacer' },
                newButton
            ]
        };

        this.add([topToolbar]);
    },
    onNewButtonTap: function () {
        console.log("newNoteCommand");
        this.fireEvent("newNoteCommand", this);
    },
    config: {
        layout: {
            type: 'fit'
        }
    }
});

Digamos que queremos adicionar um métodosetSpecialUIState para nossoNotesListContainer. Quando é chamado, queremos fazer algo com onewButton (por exemplo, esconda). Como eu ganharia acesso aonewButton exemplo sem abusarExt.getComp() por isso? Posso definir como uma variável de instância? Como é o caminho canônico?

ATUALIZAR

Eu apenas tentei isso, como Nikolaj Borisik sugeriu.

    this._newButton = this.add([{
            xtype: "button",
            text: 'New',
            ui: 'action',
            handler: this.onNewButtonTap,
            scope: this
        }];

Isso funciona como um encanto. Eu só não sei se é idiomático fazê-lo ou se há alguma desvantagem que eu possa estar faltando. Caso contrário, eu recomendo fazer isso. Sencha de lado, é muito melhor compor visões significativas que abstraem partes coerentes da interface do usuário. Isso é muito melhor do que vazar todos os botões até o controlador e mexer diretamente com eles.

Então, eu me pergunto se há alguma desvantagem dessa abordagem?

questionAnswers(3)

yourAnswerToTheQuestion