3 Stimmen

sencha touch 2 - wie man die History-Unterstützung manipuliert

Ich möchte das Routing-System verwenden, um Unterstützung für die Zurück-Taste zu bieten. Ich zeige eine Liste von Elementen, die auf einem Datensatzspeicher basieren. function(list, index, target, record) Ich erhalte einen Verweis auf den ausgewählten Datensatz, den ich an einen neuen Bildschirm weitergebe, den ich instanziiere und anzeige.

Wie weise ich in diesem Szenario den Verlaufsmanager an, dass ich zu einem neuen Bildschirm gewechselt habe, und aktiviere die Schaltfläche "Zurück". application.redirectTo aber ich würde meinen Verweis auf den Datensatz verlieren, den ich verwenden möchte. (redirectTo wird eine neue Aktion in den Verlaufsstapel schieben, die die primäre ID des Datensatzes enthält, aber das scheint überflüssig, da ich dann den Datensatz basierend auf der ID erneut suchen müsste, wenn ich die Weiterleitung bearbeite).

Gibt es eine direkte Möglichkeit, dem Verlaufsobjekt mitzuteilen, dass es zu einer neuen Aktion übergehen soll, und auch die Unterstützung der Zurück-Taste zu aktivieren?

1voto

sepulchered Punkte 804

Ich habe nicht gefunden, wie man es einfacher machen kann. Hier ist, wie ich es in meiner Anwendung tun (mit verschachtelten Liste). Ich habe Controller mit Routing wie folgt erstellt:

Ext.define('MyApp.controller.ListItems', {
    extend: 'Ext.app.Controller',

    config: {
            refs: {
                    nestedList: '.nestedlist'
            },
            control: {
                    nestedList: {
                            itemtap: 'itemSelected'
                    }
            },
            routes: {
                    'item/:id': 'showListItem'
            }
    },

    list: null,
    index: null,
    target: null,
    record: null,
    showListItem: function( id ){
            var nestedList = this.getNestedList(),
                    store = nestedList.getStore(),
                    node = store.getById(id);
            if ( node.isLeaf() ){
                    nestedList.goToLeaf(node);
                    nestedList.fireEvent('leafitemtap', nestedList, this.list, this.index, this.target, this.record);
            } else {
                    nestedList.goToNode(node);
            }
    },
    itemSelected: function( nl, list, index, target, record ){
            this.list = list;
            this.index = index;
            this.target = target;
            this.record = record;
            var path = 'item/'+record.data.id;
            this.redirectTo(path);
    }
});

Ich habe auch überschreiben onItemTap-Methode der verschachtelten Liste für alle Liste Änderungen jetzt über Controller & Propper-Routing durchgeführt wird.

onItemTap: function(list, index, target, record, e){
    this.fireEvent('itemtap', this, list, index, target, record, e);
}

Ich hoffe, es wird hilfreich sein. Schreiben Sie bitte hier, wenn Sie einen besseren Weg finden.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X