在我的离子移动应用中。我有注册页面。一旦用户注册成功,用户将被导航到个人资料页面。现在我想要的是,一旦用户成功注册,用户就不能回到注册页面。
如果注册成功,我怎样才能确保后退按钮不会导航到注册页面?
我的一个解决方案是,每次加载注册页面时检查某些条件,并根据该条件保留或导航到其他页面。 e.g。
if(userIsLoggedin()) {
$state.go('home')
}
答案 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)
您的解决方案看起来不错。我想您可能还想确保在服务器端检查用户会话。