我在广播时执行路由,我需要通过路由将$ rootScope。$ on中的参数传递给控制器。
$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
})
但我想,我做错了。请帮我。任何帮助表示赞赏。谢谢。
编辑:我将添加一个场景。当'令牌'在固定时间后变为无效并且用户被重定向到登录屏幕时,我需要从任何屏幕将消息字符串传递给loginController。现在,当用户第一次到达时,没有要显示的消息。 因此,这是我将消息传递给广播的方式
$rootScope.$broadcast('unauthorized_access', param);
答案 0 :(得分:1)
使用resolve:
$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