工厂实施问题

时间:2016-12-21 12:22:04

标签: javascript angularjs angularjs-service

我正在尝试创建一个服务,就是这样:

(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不是函数

我做错了什么?

2 个答案:

答案 0 :(得分: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 :(得分:1)

您只是缺少在Service

上返回具有适当属性的对象
return {
  getData: getData
}