$ state.go似乎没有用

时间:2016-07-01 12:06:15

标签: javascript angularjs

我有一个场景,当点击搜索项目时,我需要加载不同的状态

这是我的HTML代码

<span class="item-title" ng-click="fnViewProfile()">
      <span> {{item.name}} </span>
</span>
下面的

是我的控制器代码:

$scope.fnViewProfile = function() {
        $state.go("ViewProfile", {
            "id": 10215
        });
    }

在我的app.js中我有一个解析函数,我在执行ajax调用以获取html之前的数据

.state('ViewProfile', {
            parent: 'home',
            url: '/ViewProfile:id',
            templateUrl: 'views/ViewProfileView.html',
            controller: 'ProfileViewCtrl',
            resolve: {
                profile: function(DashboardService, $stateParams, $scope) {
                    debugger;
                    var userId = $stateParams.id;
                    var userData;
DashboardService.fnGetUser(userId).then(function(oResponse) {
                        userData = oResponse.data;

                    })
return userData;
                }
            }

在ViewProfile状态的控制器中,我正在传递个人资料服务

angular.module('talentGraphApp')
.controller('ProfileViewCtrl', function($scope, $state, DashboardService, profile) {
    debugger;
    $scope.profile = profile;
    console.log(profile);
});

但我无法在控制台中获取个人资料。

我不明白我哪里出错了

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:1)

resolve中,在您在promise回调中分配之前返回userData,因此在将其传递给控制器​​时未定义

返回承诺

更改为

 resolve: {
      profile: function(DashboardService, $stateParams) {                      
             var userId = $stateParams.id;            
             return DashboardService.fnGetUser(userId).then(function(oResponse) {
                        // return as resolved value
                        return oResponse.data;    
             });    
        }
}

路由配置中也没有$scope