TypeError:api.getAll不是函数,无法识别服务方法

时间:2015-11-12 13:53:37

标签: javascript angularjs dependency-injection typeerror angularjs-controller

我有一个非常简单的服务和一个控制器试图从中获取一些信息,但我一直得到.methodName不是一个函数。

以下是服务 apiService.js

(function (module) {

    function api() {

        var sharedService = {};

        sharedService = {

            getAll: function () {
                return 'test';
            }
        };
        return sharedService;

    }

    module.factory("api", api);


}(angular.module("anbud")));

然后我尝试在控制器中使用我的方法getAll,如下所示:

(function () {
    'use strict';

    angular.module('anbud')
      .controller('BasicExampleCtrl', ['$scope', 'api', function (api, $scope) {

           // on successfull request
          function onJson(json) {
              $scope.data = json;
          }

          // error getting json
          function onError() {
              throw 'error getting json';
          }

          function initialize() {

              api.getAll()
                  .then(onJson, onError);
          }

          initialize();

      }]);

}());

但我收到错误:

TypeError: api.getAll is not a function
    at initialize (basic-example.js:67)

感谢任何帮助,谢谢。

2 个答案:

答案 0 :(得分:3)

您已在controller工厂函数中交换了依赖关系序列,在注入函数时,序列必须与DI array中包含的序列相同。

<强>代码

.controller('BasicExampleCtrl', ['$scope', 'api', function ($scope, api) { //<- first $scope then api.

答案 1 :(得分:1)

尝试这样:

.controller('BasicExampleCtrl', ['$scope', 'api', function ($scope,api) {