2016-07-01 2 views
0

У меня есть сценарий, где, когда щелчок по пункту я искал нужно загрузить другое состояние

Вот мой 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

Вам нужно «вернуться» в обещание. 'return oResponse.data;' – Erevald

+0

Почему вы вводите '$ scope' в' resolve'? –

+0

Я забыл удалить $ scope там, но все еще в состоянии ViewProfile я не смог получить профиль профиля –

ответ

1

В resolve вы вернетесь 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 в конфигурации маршрутизации

Смежные вопросы