đăng nhập tôi có 4 trạng thái: dashboard, dahboard.main, dashboard.minor, đăng nhập. trang tổng quan là trừu tượng và nó là trạng thái gốc cho trạng thái .minor và .main. Dưới đây là mã của tôi:Angularjs ui-router. Làm thế nào để chuyển hướng đến trang
.state('dashboard', {
url: "/dashboard",
abstract: true,
templateUrl: "views/dashboard.html",
resolve: {
auth: function ($q, authenticationSvc) {
var userInfo = authenticationSvc.getUserInfo();
if (userInfo) {
return $q.when(userInfo);
} else {
return $q.reject({ authenticated: false });
}
}
},
controller: "DashboardCtrl",
data: { pageTitle: 'Example view' }
})
.state('dashboard.main', {
url: "",
templateUrl: "views/main.html",
controller: "DashboardCtrl",
data: { pageTitle: 'Main view' }
})
Như bạn thấy trong trạng thái trang tổng quan, tôi có tùy chọn giải quyết. Bằng cách này tôi muốn chuyển hướng người dùng đến trang đăng nhập nếu anh ta không được ủy quyền. Vì lý do này, tôi sử dụng đặc biệt authenticationSvc dịch vụ:
.factory("authenticationSvc", ["$http", "$q", "$window", function ($http, $q, $window) {
var userInfo;
function login(email, password) {
var deferred = $q.defer();
$http.post("/api/login", { email: email, password: password })
.then(function (result) {
if(result.data.error == 0) {
userInfo = {
accessToken: result.data.accessToken
};
$window.sessionStorage["userInfo"] = JSON.stringify(userInfo);
deferred.resolve(userInfo);
}
else {
deferred.reject(error);
}
}, function (error) {
deferred.reject(error);
});
return deferred.promise;
}
function getUserInfo() {
return userInfo;
}
return {
login: login,
logout: logout,
getUserInfo: getUserInfo
};
}]);
tôi kiểm tra giá trị auth trong cấu hình:
.run(function($rootScope, $location, $state) {
$rootScope.$state = $state;
$rootScope.$on("routeChangeSuccess", function(userInfo) {
consol.log(userInfo);
});
$rootScope.$on("routeChangeError", function(event, current, previous, eventObj) {
if(eventObj.authenticated === false) {
$state.go('login');
}
});
});
Nhưng tiếc là khi tôi đi đến trạng thái gốc trang web hoặc bảng điều khiển của tôi, tôi nhận được một sản phẩm nào trang. Có gì sai với mã này? Cảm ơn!
Tên sự kiện thực sự '$ routeChangeSuccess' và' $ routeChangeError' (chú ý hàng đầu '$') ... không thể đơn giản như vậy? – Clive