У меня есть сценарий, когда при нажатии на поиск объекта мне нужно загрузить другое состояние
Вот мой 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);
});
Но я не могу получить профиль в консоли.
Я не понимаю, куда я иду
Любая помощь будет оценена по достоинству.
В 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
в конфигурации маршрутизации
return
внутрь обещания.return oResponse.data;
$scope
вresolve
?