使用路由和路由过滤器时,Sencha Touch历史记录问题

时间:2014-05-08 06:32:19

标签: sencha-touch-2

在Sencha Touch 2中,我在路线之前有一个beforeFilter。

当用户想要访问某个视图时,“beforeFilter”会先行动。

我使用过滤器进行身份验证检查和其他事情。 我保持这个例子非常简单,突出我需要帮助的地方:

Ext.define("TestApp.controller.Router", {

    extend: "Ext.app.Controller",

    config: {
         before: {
            home: 'beforeFilter',
            login: 'beforeFilter',
            products: 'beforeFilter'
        },

        routes: {
            '': 'home',
            'home' : 'home',
            'login' : 'login',
            'products' : 'products',
            'products/:id': 'product',
        }
    },

    beforeFilter: function(action) {

        // The before filter acts before the user gets to any of the routes.

        // Check the user's authentication state.

        // If the user wants to visit the "products" route and he ISNT't authenticated,
        // Redirect the user to the login page.
        this.redirectTo('login');

        // else - go to the normal root.
        action.resume();
    },


    home: function () {
        // This and the functions bellow handle the display of the routes.
    },

    login: function () {
    },

    products: function () {
    }
});

问题。

用户想要查看产品路线,但未登录。

beforefilter 会介入,并将用户重定向到登录页面。

这是我需要帮助的地方:

如果用户在登录页面上并单击触发Sencha的history.back()事件的按钮,则用户将被重定向到产品页面,AGAIN beforefilter 介入,将他重定向回登录视图

基本上,历史将不再有效。

要解决问题,我需要一种方法来阻止产品路由登录 Sencha的历史记录对象经过身份验证。

你们有其他想法吗?

我问了一个更普遍的问题,但是这个问题特别对这个问题有了更多的记录。

1 个答案:

答案 0 :(得分:0)

对于您不希望获得历史记录支持的视图,只需在不使用redirectTo的情况下添加/更改视图。

直到视口:

Ext.Viewport.add({xtype: 'myloginview'})

或导航视图(在控制器中):

this.getMyNavView().push({xtype: 'myloginview'})

这样,url不会更改为#login,也不会添加到历史堆栈。