Angularjs   发布时间:2022-04-20  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了AngularJS将服务注入多个控制器大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我在自己的模块中定义了一个服务:

angular.module('foteDatasetsservice',[])
  .factory('foteAPIservice',function($http) {

    var foteAPI = {};

    foteAPI.getDatasets = function() {
      return $http({
        method: 'JSONP',url: 'http://localhost:8080/datasets?callBACk=JSON_CALLBACK'
      });
    }

    return foteAPI;
  });

在另一个模块中,(在另一个文件中)我有一个控制器,我想用它:

angular.module('foterequests').controller('foterequestsController',['$scope',function foterequestsController($scope,foteAPIservicE) {

    //snip other stuff

    $scope.datasets = [];

    foteAPIservice.getDatasets().@R_450_6048@s(function (responsE) {
      //Digging into the response to get the relevant data
      $scope.datasets = response;
      console.log(responsE);
    });

]);

我在一个名为init.js的文件中有一个init模块,它包含如下依赖项:

'use Strict';

angular.module('foterequests',['foteDatasetsservice']);

它看起来并不像实际上将foteDatasetsservice注入控制器.如果我运行该应用程序,我收到一个错误

CAnnot call method 'getDatasets' of undefined

因此,如果我通过在控制器中包含foteDatasetsservice来强制解决问题,如下所示:

angular.module('foterequests').controller('foterequestsController','foteDatasetsservice',foteAPIservicE) {
...
}]);

它给了我这个错误

Error: [$injector:unpr] UnkNown provider: foteDatasetsserviceProvider <- foteDatasetsservice

编辑:我希望能够将此服务注入3个需要获取相同信息的控制器.

任何想法为什么工厂没有创建提供商?我迷失在那一个……

解决方法

而不是这个:

angular.module('foterequests').controller('foterequestsController',foteAPIservicE)
{ ... }]);

试试这个:

angular.module('foterequests').controller('foterequestsController','foteAPIservice',foteAPIservicE)
{ ... }]);

您已经注入了foteDatasetsservice,现在您只想注入服务foteAPIservice.

更新为@dtabuenc评论说最好不要在模块名称中附加service.

大佬总结

以上是大佬教程为你收集整理的AngularJS将服务注入多个控制器全部内容,希望文章能够帮你解决AngularJS将服务注入多个控制器所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。