1

Sencha 的新手,我有一个运行良好的登录表单,并根据需要通过 ajax 发布表单元素。onSuccess,它将数据存储在 localStorage.token 中,然后移动到下一页。我想要的是,当应用程序加载时,如果 localStorage.token 中已经有数据,那么它会直接进入第二页。我尝试了 setActiveItem,但没有得到想要的结果。

这是我的 app.js:

    //<debug>
Ext.Loader.setPath({
    'Ext': 'touch/src'
});
//</debug>

Ext.application({
    name: 'axis3',
    //profiles: ['Phone', 'Tablet', 'Desktop'],


    requires: [
        'Ext.MessageBox'
    ],

    views: ['Login','Main'],
    controllers:['Login','Main'],

    icon: {
        '57': 'resources/icons/Icon.png',
        '72': 'resources/icons/Icon~ipad.png',
        '114': 'resources/icons/Icon@2x.png',
        '144': 'resources/icons/Icon~ipad@2x.png'
    },

    isIconPrecomposed: true,

    startupImage: {
        '320x460': 'resources/startup/320x460.jpg',
        '640x920': 'resources/startup/640x920.png',
        '768x1004': 'resources/startup/768x1004.png',
        '748x1024': 'resources/startup/748x1024.png',
        '1536x2008': 'resources/startup/1536x2008.png',
        '1496x2048': 'resources/startup/1496x2048.png'
    },

    launch: function() {
        // Destroy the #appLoadingIndicator element
        Ext.fly('appLoadingIndicator').destroy();
        // Initialize the login view
        Ext.Viewport.add([
            { xtype: 'loginview' },
            { xtype: 'mainview' }
        ]);
        Ext.Ajax.setUseDefaultXhrHeader(false);// needed to enable cross domain request.
    },

    onUpdated: function() {
        Ext.Msg.confirm(
            "Application Update",
            "This application has just successfully been updated to the latest version. Reload now?",
            function(buttonId) {
                if (buttonId === 'yes') {
                    window.location.reload();
                }
            }
        );
    }
});

感谢您的帮助

4

1 回答 1

1

我会根据您的令牌检查结果添加您需要的一个视图:

launch: function() {
    // Destroy the #appLoadingIndicator element
    Ext.fly('appLoadingIndicator').destroy();

    var hasToken = this.hasToken();
    if (hasToken)
        Ext.Viewport.setActiveItem({ xtype: 'mainview' });
    else
        Ext.Viewport.setActiveItem({ xtype: 'loginview' });

    Ext.Ajax.setUseDefaultXhrHeader(false);// needed to enable cross domain request.
},
于 2013-08-01T15:27:24.400 回答