Sencha Touch 2.1 Anzeigen von Ref im Controller

Beim Versuch, programmgesteuert push eine Blick in die Haupt-navigation anzeigen auf den viewport, bekomme ich die folgende Fehlermeldung:

Uncaught TypeError: Object [object object] has no method 'getMainPanel", wenn Sie die folgende Zeile in die MainController.js Datei heißt:

var mainnav = this.getMainPanel();

Ich versuche einfach nur, um ein ref-navigation anzeigen von xtype, so dass ich kann eine mainnav.push('viewName'), je nachdem, ob es zurückgegebenen Daten aus einer Daten-Anruf. Die Daten und Daten nennen sind die arbeiten gut, und ich kann Sie manuell fügen Sie die gewünschten sichten auf die main view-port, so dass die navigation Sicht wertlos, das ist nicht meine Absicht.

Habe ich versucht, indem Sie die "Ref" durch xtype, 'MainPanel' und auch durch die Zuordnung und id, id: 'MainPanel' und in den controller versucht:

refs: {
      mainPanel: 'MainPanel'
}

und von Id:

refs: {
mainPanel: '#MainPanel'
}

Egal, der Fehler ist der gleiche.

Für den Hinweis, den ich versucht habe zu befolgen, die Situationen beschrieben, in den folgenden Ressourcen:

http://docs.sencha.com/touch/2.1.1/#!/guide/Controller

http://docs.sencha.com/touch/2.0.2/#!/api/Ext.ComponentQuery

http://www.sencha.com/forum/showthread.php?179143-View-reference-getter-undefined

Sencha Touch 2 - Nicht in der Lage zu bekommen, ref view vom controller

Sencha Touch 2.0-Controller-refs-Attribut nicht funktioniert?

Sencha Touch 2.0 und navigation.View - MVC

Hier ist mein code:

app.js

Ext.application({
name: 'AddCharSheet',
views: ['Main'],
models: ['CharacterSelectModel'],
stores: ['CharacterSelectStore'],
controllers: ['MainController'],

launch: function(){
    Ext.Viewport.add({
        xtype: 'MainPanel'
    });
}
});

Main.js

   Ext.define('AddCharSheet.view.Main', {
    extend: 'Ext.navigation.View',
    requires: ['AddCharSheet.view.CharacterSelect', 'AddCharSheet.view.AddNewCharacter', 'Ext.Toolbar', 'Ext.Panel'],
    xtype: 'MainPanel',
    config: {

    }
    });

MainController.js

Ext.define('AddCharSheet.controller.MainController',{
Extend: 'Ext.app.Controller',

config: {
    stores: ['AddCharSheet.store.CharacterSelectStore'],
    models: ['AddCharSheet.model.CharacterSelectModel'],
    views: ['AddCharSheet.view.AddNewCharacter', 'AddCharSheet.view.CharacterSelect'],

    refs: {
        mainPanel: 'MainPanel'
    },
    control: {

    },
    launch: function() {
    }
},

init: function(){
    var chs = Ext.getStore('charSelStore');
    var mainnav = this.getMainPanel();
    chs.load({
        callback: function(recs, operation){
            if(this.getCount() > 0){
                mainnav.push('CharList');
            }
            else{
                mainnav.push('NewCharacter');
            }
        }
    });
}
});

Update Main.js und update MainController.js

Main.js

Ext.define('AddCharSheet.view.Main', {
    extend: 'Ext.navigation.View',
    requires: ['AddCharSheet.view.CharacterSelect', 'AddCharSheet.view.AddNewCharacter', 'Ext.Toolbar', 'Ext.Panel'],
    xtype: 'MainPanel',
    config: {
        itemId: 'mainpanel'
    }
});

MainController.js

Ext.define('AddCharSheet.controller.MainController',{
    Extend: 'Ext.app.Controller',

    config: {
        stores: ['AddCharSheet.store.CharacterSelectStore'],
        models: ['AddCharSheet.model.CharacterSelectModel'],
        views: ['AddCharSheet.view.AddNewCharacter', 'AddCharSheet.view.CharacterSelect'],

        refs: {
            mainPanel: {
                autoCreate: true,
                selector: '#mainpanel',
                xtype: 'MainPanel'
            }
        },
        control: {

        },
        launch: function() {
        }
    },

    init: function(){
        var chs = Ext.getStore('charSelStore');
        var mainnav = this.getMainPanel();
        chs.load({
            callback: function(recs, operation){
                if(this.getCount() > 0){
                    mainnav.push({xtype: 'CharList'});
                }
                else{
                    mainnav.push({ xtype: 'NewCharacter'});
                }
            }
        });
    }
});
InformationsquelleAutor SouthPlatte | 2013-04-16
Schreibe einen Kommentar