我有一个场景,当点击搜索项目时,我需要加载不同的状态
这是我的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);
});
但我无法在控制台中获取个人资料。
我不明白我哪里出错了
任何帮助都将不胜感激。
答案 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