Alp*_*edi 16 angularjs ionic-framework
我正在开发一个IONIC应用程序,我已经检查过用户是否已经登录,如果用户已经登录,那么应用程序应该重定向到仪表板上.此功能运行良好,但应用程序首先显示登录页面几秒钟,然后重定向到仪表板.
app.js
$rootScope.$on("$locationChangeStart", function (event, next, current) {
var prefs = plugins.appPreferences;
prefs.fetch('iuserid').then(function (value) {
if (value != '') {
$state.go('app.dashboard');
}
});
.config(function ($stateProvider, $urlRouterProvider, $httpProvider) {
$stateProvider
.state('app', {
url: "/app",
abstract: true,
templateUrl: "templates/menu.html",
controller: 'AppCtrl'
})
.state('login', {
url: "/login",
templateUrl: "templates/login.html",
controller: 'LoginCtrl'
})
.state('app.dashboard', {
url: "/dashboard",
views: {
'menuContent': {
templateUrl: "templates/dashboard.html",
controller: 'DashboardCtrl'
}
}
})
;
// if none of the above states are matched, use this as the fallback
$urlRouterProvider.otherwise('/login');
});
});
Run Code Online (Sandbox Code Playgroud)
我不知道我在哪里弄错了.
编辑:我能够进行身份验证并重定向到仪表板,但我的问题是显示少数(最多2秒)的登录页面,然后重定向到仪表板,我正在处理IONIC应用程序
第二次编辑 我发现了问题,但不知道解决方案.首选项在$ ionicPlatform.ready中工作很大,但在$ locationChangeStart中不起作用.我需要$ locationChangeStart中的首选项,因为它在$ ionicPlatformReady之前运行.我迫切需要解决方案.
Mik*_*hez 31
我做以下事情:
在app.js中
.state('login', {
url: "/login",
templateUrl : "templates/session/login.html",
controller : 'SessionCtrl'
})
.state('register', {
url: "/register",
templateUrl : "templates/session/register.html",
controller : 'SessionCtrl'
})
.state('app', {
url: "/app",
abstract: true,
templateUrl : "templates/menu.html",
controller : 'AppCtrl',
onEnter: function($state, Auth){
if(!Auth.isLoggedIn()){
$state.go('login');
}
}
})
.state('app.main', {
url: "/main",
views: {
'menuContent': {
templateUrl : "templates/main_menu.html",
controller : "MainMenuCtrl"
}
}
})
$urlRouterProvider.otherwise('/app/main');
Run Code Online (Sandbox Code Playgroud)
Auth是一个工厂,它将auth会话存储在localstorage中.
angular.module('auth.services', [])
.factory('Auth', function () {
if (window.localStorage['session']) {
var _user = JSON.parse(window.localStorage['session']);
}
var setUser = function (session) {
_user = session;
window.localStorage['session'] = JSON.stringify(_user);
}
return {
setUser: setUser,
isLoggedIn: function () {
return _user ? true : false;
},
getUser: function () {
return _user;
},
logout: function () {
window.localStorage.removeItem("session");
window.localStorage.removeItem("list_dependents");
_user = null;
}
}
});
Run Code Online (Sandbox Code Playgroud)
我认为你应该监听$stateChangeStart上的事件$rootScope,你可以在运行时监听这个事件,如下所示:
angular.module("myapp.permission").run($rootScope){
$rootScope.$on('$stateChangeStart', function (event, toState, toParams, fromState, fromParams) {
var loggedIn = true;
if(loggedIn) {
$state.go('app.dashboard');
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
18153 次 |
| 最近记录: |