2016-12-21 2 views
0

Je suis en train de créer un service, et voici:question de la mise en œuvre usine

(function() { 
    'use strict'; 

    angular 
     .module('app') 
     .factory('appService', Service); 

    function Service($http) { 

     function getData() { 
      var request = new XMLHttpRequest(); 
      request.open('GET', 'mock.json', false); 
      request.send(null); 

      return [request.status, request.response, {}]; 
     } 

     return {}; 
    } 
})(); 

mock.json est dans le même dossier.

Alors je tente de l'appeler d'un contrôleur:

(function() { 
    'use strict'; 

    angular.module('app') 
     .controller('appCtrl', appCtrl); 

    /** @ngInject */ 
    function appCtrl(appService) { 
     console.log(appService.getData()); 
    } 
})(); 

Mais il me donne une erreur:

TypeError: appService.getData is not a function

Qu'est-ce que je fais mal?

Répondre

4

Vous renvoyez un objet vide, vous obtenez donc l'erreur attendue.

function Service($http) { 

    function getData() { 
     var request = new XMLHttpRequest(); 
     request.open('GET', 'mock.json', false); 
     request.send(null); 
     return [request.status, request.response, {}]; 
    } 

    //Here return the function reference of getData 
    return { 
     getData : getData 
    }; 
} 
1

Vous manquez juste de retourner l'objet avec les propriétés appropriées sur votre Service

return { 
    getData: getData 
}