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

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

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

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() для этого? Могу ли я установить его в качестве переменной экземпляра? Как устроен канонический путь?

ОБНОВИТЬ

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

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

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

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

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

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