注册成功后,确保后退按钮不会导航到注册页面?

时间:2016-06-25 04:16:13

标签: angularjs ionic-framework

在我的离子移动应用中。我有注册页面。一旦用户注册成功,用户将被导航到个人资料页面。现在我想要的是,一旦用户成功注册,用户就不能回到注册页面。

如果注册成功,我怎样才能确保后退按钮不会导航到注册页面?

我的一个解决方案是,每次加载注册页面时检查某些条件,并根据该条件保留或导航到其他页面。 e.g。

if(userIsLoggedin()) {
  $state.go('home')
}

3 个答案:

答案 0 :(得分:1)

创建一个存储数据的工厂

    module.factory('DataStore', [function () {
        var _local = {}, dataStore = {};
        dataStore.setValue = function (field, value) {
            _local[field] = value;
        };
        dataStore.getValue = function (field) {
            return _local[field] || null;
        };
        return dataStore;
    }])   

然后,一旦验证用户已注册,就在DataStore中设置标志

module.controller('registration', function(..., DataStore) {   
    ...
    //do all necessary logic
    if(allGood) {
        DataStore.setValue('RegistrationSuccessful', true);
    }
});

然后,您可以随时从任何其他导入DataStore的控制器进行检查

module.controller('home', function(..., DataStore) {   
    ...
    //do all necessary logic according to the code in your question
    $scope.onbtnclick = function () {
        if(DataStore.getValue('RegistrationSuccessful')) {
            $state.go('home')
        } else {
            $state.go('registration');
        }
    };
});

答案 1 :(得分:1)

您可以通过处理离子应用程序中的后退按钮来执行此操作。检查后退按钮上的应用程序状态,如果它位于配置文件页面上,则不执行任何操作,以防止默认返回事件。

$ionicPlatform.registerBackButtonAction(function (event) {
       if($state.current.name!="menu.profile" ){
            $ionicHistory.goBack(-1);
       }else{
          // if state is profile then control will be here.
       }
}, 100);

将此代码放在app.js文件中。

其他建议:一旦用户注册并登录个人资料,他/她就应该直接在应用开始时进入个人资料页面。

如果用户没有注册,您可以在注册或验证功能中执行此操作,然后将其带到注册页面。如果用户已登录,请将其带到配置文件页面。

答案 2 :(得分:0)

您的解决方案看起来不错。我想您可能还想确保在服务器端检查用户会话。

相关问题