Angular : 将参数从 $routeProvider.when 传递给控制器
Angular : pass parameter to controller from $routeProvider.when
我在广播上执行路由,我需要通过路由将参数从 $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: '/'
});
现在,到目前为止似乎没问题。但是我需要将参数传递给 loginController。我试过了,
.when('/login::msg', {
templateUrl: function(params) {
if (params) {
console.log(params);
}
return 'mainApp/landingPage/login.html';
},
controller: 'loginController',
pageParams : params
})
但我想,我做错了。请帮我。任何帮助表示赞赏。谢谢。
编辑:我将添加一个场景。当 'token' 在固定时间后无效并且用户被重定向到登录屏幕时,我需要从任何屏幕将消息字符串传递给 loginController。现在,当用户第一次到达时,没有要显示的消息。
因此,这就是我将消息传递给 broadcast
的方式
$rootScope.$broadcast('unauthorized_access', param);
使用解析:
$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
我在广播上执行路由,我需要通过路由将参数从 $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: '/'
});
现在,到目前为止似乎没问题。但是我需要将参数传递给 loginController。我试过了,
.when('/login::msg', {
templateUrl: function(params) {
if (params) {
console.log(params);
}
return 'mainApp/landingPage/login.html';
},
controller: 'loginController',
pageParams : params
})
但我想,我做错了。请帮我。任何帮助表示赞赏。谢谢。
编辑:我将添加一个场景。当 'token' 在固定时间后无效并且用户被重定向到登录屏幕时,我需要从任何屏幕将消息字符串传递给 loginController。现在,当用户第一次到达时,没有要显示的消息。 因此,这就是我将消息传递给 broadcast
的方式$rootScope.$broadcast('unauthorized_access', param);
使用解析:
$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