我有这样的服务

angular.module('services').factory('DownloadService',[$resource,
  function($resource){
    return $resource('path/to/service/download', {}, {
      downloadFile: {
             method: 'GET',
             url: 'path/to/service/download?fileID=:fileID'
      }
    });
  }
]);


然后在控制器中,我有一个函数,我在其中调用此服务并在单击文件时调用该函数

    angular.module('search').controller('MainCtrl', ['$scope','DownloadService',
      function ($scope,DownloadService){

        $scope.downloadDocument = function(id){
           DownloadService.downloadFile({
            fileId: id
           });
        };
}])


我收到此错误

TypeError:DownloadService.downloadFile is not a function...

最佳答案

创建services模块时,请确保已将search模块指定为依赖项,即类似

angular.module('search', ['services', ...])


此外,请确保您在search或它依赖的其他任何名为DownloadService的模块中没有其他服务。



您可能只想在服务的DownloadService中添加alertconsole.log以确保已实例化它。

或更好的办法是,在两个地方都将其重命名为唯一的名称(例如myDownloadService)。

console.log(new DownloadService())并检查对象是否为$downloadFile也是确保Angle正在注入正确服务的另一种方法。

09-17 06:57