1

Я выполняю маршрутизацию по широковещательной передаче, и мне нужно передать параметр из $ 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); 
+0

лучше следить за состоянием сеанса с http-перехватчиками. Когда вы получаете ошибку 401, вы можете убить свой сеанс и перенаправить пользователя на страницу входа – Foker

+0

да, это то, что я делаю. Но мне тоже нужно передать сообщение. Поэтому я передал это сообщение (что вызвало перенаправление) через трансляцию. Это моя услуга по перенаправлению на ошибку 401. service.responseError = function (resp) { var param = {}; if (resp.error == 401) { param.msg = "Token Expired"; } $ rootScope. $ Broadcast ('unauthorized_access', param); return resp; }; –

+1

, тогда попробуйте решить :) – Foker

ответ

1

Использование решительность:

$routeProvider 
    .when("/news", { 
     templateUrl: "newsView.html", 
     controller: "newsController", 
     resolve: { 
      message: function(messageService){ 
       return messageService.getMessage(); 
     } 
    } 
}); 

Тогда в контроллере, вы можете получить данные, как показано ниже:

app.controller("newsController", function (message) { 
    $scope.message = message; 
}); 

Подробнее по данному вопросу:

http://odetocode.com/blogs/scott/archive/2014/05/20/using-resolve-in-angularjs-routes.aspx

+1

Спасибо Thalaivar, именно так я и искал. Я тоже поклонник Раджани. Ожидание Кабали .. для быстрого ответа. Я помету ваш, как принято. –

+0

@JayarajPS: Отлично подходит для поклонников талавар ... – Thalaivar