Как кэшировать экземпляр подкомпонентов внутри компонентов

Множество примеров Sencha Touch, которые я нашел в Интернете, на самом деле не фокусируются на правильной инкапсуляции вида. Таким образом, контроллер прослушивает каждое отдельное событие кнопки, даже если кнопка глубоко вложена в представление. Другими словами, внутренности зрения просачиваются сквозь которые никогда не бывает хорошо.

Я нашел один хороший учебник, который побуждает вас создавать осмысленные представления, которые слушают местные события и поднимают значимые деловые события и т. Д.

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

Однако одна вещь, которую я до сих пор не могу понять, это как лучше всего кэшировать вложенные экземпляры компонентов. Рассмотрим этот пример:

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'
        }
    }
});

Допустим, мы хотим добавить методsetSpecialUIState нашимNotesListContainer, Когда он вызывается, мы хотим что-то сделать сnewButton (например, скрыть это). Как бы я получить доступ кnewButton экземпляр без злоупотребленияExt.getComp() для этого? Могу ли я установить его в качестве переменной экземпляра? Как устроен канонический путь?

UPDATE

Я просто попробовал это, как предложил Николай Борисик.

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

Это работает как шарм. Я просто не знаю, идиоматично ли это делать или есть какие-то недостатки, которые я мог бы пропустить. В противном случае я очень рекомендую это сделать. Сенча, кроме того, гораздо лучше составлять осмысленные представления, которые абстрагируются от последовательных частей пользовательского интерфейса. Это намного лучше, чем просачивать каждую кнопку в контроллер и возиться с ними напрямую.

Поэтому мне интересно, есть ли недостатки этого подхода?

Ответы на вопрос(3)

Ваш ответ на вопрос