我想从app.run向我的loginController发送一个参数。因为,我从app.run中定义的$ rootScope。$ on()调用state.go()。
app.run('$rootScope', '$state', '$stateParams',function($rootScope, $state, $stateParams(){
$rootScope.$state = $state;
$rootScope.$stateParams = $stateParams;
$rootScope.$on('unauthorized_access', function (event, args) {
$state.go("page.login", {'error': args.error,'msg': args.msg});
});
}]);
我有
app.config(['$stateProvider','$urlRouterProvider',function($stateProvider, $urlRouterProvider, $httpProvider){
$urlRouterProvider.otherwise('/');
$stateProvider
// some parts omitted...
.state('page.login', {
url: '/login',
views: {
'page': {
templateUrl: 'app/landingPage/login.html',
controller: 'loginController',
params: {obj : {error : null, message: null} }
}
}
});
}]);
我希望在转换期间通过$ state.go()将参数从app.run传递给loginController。
$state.go("page.login", {'error': err,'message': msg});
在我的控制器中,这就是我试图接收参数的方法......
app.controller('loginController',['$scope', '$state', '$stateParams', function($scope, $state, $stateParams){
console.log($stateParams.obj);
}]);
我不想将网址更改为>> url:' / login /:params'等在stateProvider中
我引用了此页面:stackoverflow example
但是,没有帮助。任何帮助表示赞赏。为我糟糕的沟通道歉。
答案 0 :(得分:0)
经过长时间的研究,我得到了奇怪的解决方案。我仍然怀疑,这是否是一个解决方案。但是,它对我有用....我做了一个ui.router LOL的破解......
我使用的是Angular ui-router版本v0.2.18。在那里排队。 3160,他们放了一行代码,如:
// Store the hash param for later (since it will be stripped out by various methods)
var hash = toParams['#'];
并排队。 3223他们有
if (shouldSkipReload(to, toParams, from, fromParams, locals, options)) {
if (hash) toParams['#'] = hash;
所以,我想用这样的'#'键传递我的对象
.state('page.login', {
url: '/login',
views: {
'body@page': {
templateUrl: 'app/landingPage/login.html',
controller: 'loginController',
params: {'#' : null},
}
},
authenticate: false
});
并且喜欢这个
$rootScope.$on('unauthorized_access', function (event, args) {
$state.go("page.login", {'#' : {'error': args.error,'msg': args.msg}});
});
并且惊讶,它起作用..... 我得到了登录控制台的对象:console.log($ stateParams ['#']);
我知道解决方案是狡猾的[ udayip ,就像在马拉雅拉姆语中一样] ......但是它对我有用......我不会将此标记为答案。所以,我请求一些有角度的专家提供真正的解决方案。如果有专家说,这可能是一个解决方案,我会将其标记为答案。