我正在尝试在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/