Zwischenspeichern der Instanz von Unterkomponenten in Komponenten

Viele Sencha Touch-Beispiele, die ich online gefunden habe, konzentrieren sich nicht wirklich auf die korrekte Darstellung von Ansichten. Der Controller lauscht also dem Ereignis jeder einzelnen Schaltfläche, auch wenn sich die Schaltfläche tief in einer Ansicht befindet. Mit anderen Worten, die Interna des Blicks lecken, was niemals eine gute Sache ist.

Ich habe ein gutes Tutorial gefunden, das Sie ermutigt, aussagekräftige Ansichten zu erstellen, die lokale Ereignisse anhören und aussagekräftige Geschäftsereignisse usw. auslösen.

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

Eine Sache, die ich bisher nicht wirklich herausfinden konnte, ist, wie man verschachtelte Komponenteninstanzen am besten zwischenspeichert. Betrachten Sie dieses Beispiel:

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

Angenommen, wir möchten eine Methode hinzufügensetSpecialUIState zu unsererNotesListContainer. Wenn es heißt, wollen wir etwas mit dem tunnewButton (z. B. verstecke es). Wie würde ich Zugang zum Internet bekommen?newButton Beispiel ohne MissbrauchExt.getComp() dafür? Kann ich es als Instanzvariable festlegen? Wie ist der kanonische Weg?

AKTUALISIEREN

Ich habe es einfach versucht, wie Nikolaj Borisik vorgeschlagen hat.

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

Das wirkt wie ein Zauber. Ich weiß nur nicht, ob das idiomatisch ist oder ob es irgendwelche Nachteile gibt, die mir fehlen könnten. Ansonsten würde ich dies wärmstens empfehlen. Abgesehen von Sencha ist es viel besser, aussagekräftige Ansichten zu verfassen, die kohärente Teile der Benutzeroberfläche abstrahieren. Das ist viel besser, als jede einzelne Taste an den Controller durchzuleiten und direkt mit ihnen zu spielen.

Ich frage mich also, ob es Nachteile dieses Ansatzes gibt.

Antworten auf die Frage(3)

Ihre Antwort auf die Frage