从Angular Service返回值

时间:2016-08-25 14:29:54

标签: angularjs factory

嗨我不明白为什么我的控制器调用时总是从这个服务中获取空数组

strlen

1 个答案:

答案 0 :(得分:0)

return用于承诺。每个嵌套级别都需要包含return语句。

app.factory('Contacts', function($cordovaContacts, $ionicPlatform) {

    var contacts = {
        all:function(){
            var options = {};
            options.multiple = true;
            options.filter = "";
            options.hasPhoneNumber = true;
            //return promise
            return $ionicPlatform.ready().then(function() {
                //return promise to chain
                return $cordovaContacts.find(options)
            }).then(function(allContacts){
                var contactsFound = [];
                angular.forEach(allContacts, function(contact, key) {
                    contactsFound.push(contact);
                });
                //return to chain data
                return contactsFound;
            }).catch(function(contactError){
                console.log('Error');
                //throw to chain error
                throw contactError;
            });
        }
    }; //end contacts

    return contacts;
});

在控制器中,使用返回的承诺。

app.controller("myCtrl", function($scope,Contacts) {

    var contactsPromise = Contacts.all();

    contactsPromise.then( function(contactsFound) {
         $scope.contactsFound = contactsFound;
    });
});