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

10-09 18:08