我正在尝试在 module.config()
对象中设置一些基本的应用程序数据,只有当用户使用附加到特定条目的唯一键点击应用程序时,我才会这样做点,否则我的状态将以不同的响应解决。
我正在使用 $urlRouterProvider.when()
,在指定的入口点捕获用户,然后解析 promise ($http.get()
) ,然后返回状态。但似乎无法让它发挥作用。数据本身确实返回了,但函数没有返回路径,我不明白为什么。
$urlRouterProvider.when('/hi/:userkey',function($match,$rootScope, $http){
$http.get('http://api.com/login/'+$match.userkey)
.success(function(result){
$rootScope.data = result;
return '/home';
})
});
我还尝试在 .then()
中设置返回值:
.then(function(){
return '/home';
})
我没有收到任何错误,但没有处理返回值。
最佳答案
所以,我觉得这不是最好的答案,但现在有一些人问我是否找到了解决方案,我确实通过激活所需状态而不是返回它的路线来让它工作。然而,我不想接受这个答案,因为我觉得 esalija 的答案应该有效,而且我正在尝试将测试放在一起看它是否真的是 ui.router 的错误
。在那之前,这绝对有效,而且在我的脑海中,至少对于一个小应用程序来说,它不会花费你太多。
$urlRouterProvider.when('/hi/:userkey',function($match, $http, Api, $state){
return $http.get('http://api.site.com/index.php/login/'+ $match.userkey).success(function(result){
Api.userkey = $match.userkey;
Api.appdata = result;
}).then(function(){
$state.go('app');
});
您可以在我的 devsite/#/hi/5300e0ce9dfb8 上试用
编辑
我想我应该觉得这样做很脏,这与模块本身完成的方式相同:
$urlRouterProvider.when(state.url, ['$match', '$stateParams', function ($match, $stateParams) {
if ($state.$current.navigable != state || !equalForKeys($match, $stateParams)) {
$state.transitionTo(state, $match, false);
}
}]);
关于javascript - $urlRouterProvider.when() 内的 Angular-UI Resolve Promise 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21667838/