2016-12-21 4 views
0

Я пытаюсь создать службу, и это он:Factory проблема реализации

(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 находится в той же папке.

Тогда я пытаюсь вызвать его из контроллера:

(function() { 
    'use strict'; 

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

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

Но это дает мне ошибку:

TypeError: appService.getData is not a function

Что я делаю неправильно?

ответ

4

Вы возвращаете пустой объект, таким образом вы получаете ожидаемую ошибку.

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

Вы просто не хватает, чтобы вернуть объект с соответствующими свойствами на ваш Service

return { 
    getData: getData 
} 
Смежные вопросы