我有一台等待解决这些属性的路由器
$stateProvider.state('friends', {
url: '/friends/{id}',
templateUrl: '/friends.html',
controller: 'friendsCtrl',
resolve: {
friend: ['$stateParams', 'friends', function($stateParams, friends){
return friends.get($stateParams.id);
}],
notes: ['$stateParams', 'friends', function($stateParams, friends){
return friends.getNotes($stateParams.id);
}]
}
});
这是friends.get和friends.getNotes。
friends.get = function(id){
return $http.get('/friends/' + id).then(function(res){
return res.data;
});
};
friends.getNotes = function(id){
return $http.get('/friends/' + id + '/notes').then(function(res){
console.log(res.data);
return res.data;
});
}; etc... (10 more methods)
朋友是一个拥有大约12种不同方法的对象,getNotes并且只是其中两种。我已经检查了控制台日志中的getNotes并获取了。 get返回一个朋友对象(如我所愿),getNotes返回一个音符数组(也是我想要的)。
此问题出现在控制器内部。朋友可以根据需要解决朋友对象。但是,笔记在整个朋友对象中得到解决(它不是一个数组,它恰好是使用get和getNotes等方法的朋友对象)。
这是我将朋友和笔记注入控制器的方式
app.controller('friendsCtrl', ['$scope', 'friend', 'notes', 'friends',
function($scope, friend, friends, notes){
$scope.doComment = false;
$scope.friend = friend;
console.log(friend);
$scope.notes = notes;
console.log(notes);
记录朋友给了我一个朋友对象。记录笔记没有按预期给我一系列笔记,而是我得到了整个朋友对象。因此,不是[note1,note2,note3],而是使用getNotes,get等方法获取Object。任何想法为什么我得到朋友对象而不是笔记中的notes数组?
答案 0 :(得分:2)
注入服务的顺序不正确。应该是
function($scope, friend, notes, friends)
根据['$scope', 'friend', 'notes', 'friends', function() {...}
。