AngularJS Promise解决不正确

时间:2014-12-31 07:00:45

标签: angularjs

我有一台等待解决这些属性的路由器

$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数组?

1 个答案:

答案 0 :(得分:2)

注入服务的顺序不正确。应该是

function($scope, friend, notes, friends)

根据['$scope', 'friend', 'notes', 'friends', function() {...}