Я выполняю маршрутизацию по широковещательной передаче, и мне нужно передать параметр из $ rootScope. $ На контроллер через маршрутизацию.
$rootScope.$on('unauthorized_access', function (event, args) {
$location.path('/login:' + args.msg);
});
Теперь это работает.
$routeProvider
.when('/', {
templateUrl: 'mainApp/landingPage/login.html'
})
.when('/login::msg', {
templateUrl: function(params) {
if (params) {
// The params can be printed in console from here...
console.log(params);
}
return 'mainApp/landingPage/login.html';
},
controller: 'loginController'
})
.otherwise({
redirectTo: '/'
});
Теперь, кажется, все в порядке. Но мне нужно передать params в loginController. Я пробовал,
.when('/login::msg', {
templateUrl: function(params) {
if (params) {
console.log(params);
}
return 'mainApp/landingPage/login.html';
},
controller: 'loginController',
pageParams : params
})
но я думаю, что я делаю это неправильно. Пожалуйста, помогите мне. Любые советы приветствуются. Спасибо.
EDIT: Я добавлю сценарий. Мне нужно передать строку сообщения loginController с любого экрана, когда «токен» становится недействительным после определенного времени, и пользователь перенаправляется на экран входа в систему. Теперь, когда пользователь приходит в первый раз, сообщения не отображаются. Следовательно, это, как я передать сообщение в эфир
$rootScope.$broadcast('unauthorized_access', param);
лучше следить за состоянием сеанса с http-перехватчиками. Когда вы получаете ошибку 401, вы можете убить свой сеанс и перенаправить пользователя на страницу входа – Foker
да, это то, что я делаю. Но мне тоже нужно передать сообщение. Поэтому я передал это сообщение (что вызвало перенаправление) через трансляцию. Это моя услуга по перенаправлению на ошибку 401. service.responseError = function (resp) { var param = {}; if (resp.error == 401) { param.msg = "Token Expired"; } $ rootScope. $ Broadcast ('unauthorized_access', param); return resp; }; –
, тогда попробуйте решить :) – Foker