[angularjs]TypeError: Service.functionName 不是一个函数

发布时间: 2017/4/23 6:02:27
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我有服务这样的事情

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...

解决方法 1:

请确保您有 services 指定为依赖项,当您创建的模块 search 模块,即类似

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

此外,确保您没有一不同的服务,在 search 或任何其他模块,它取决于具有名称 DownloadService


你可能想要添加 alertconsole.log 中的服务 DownloadService,以确保它被实例化。

或更好的是,只是将重命名它为一些独特的东西 (说 myDownloadService ) 在两个地方。

A console.log(new DownloadService()) 和检查对象的 $downloadFile 也是另一种方式来确认这角注射正确的服务。

官方微信
官方QQ群
31647020