我正在开发angularjs应用程序。我有一个JavaScript函数可填充下拉列表。我正在拨打http来从api获取数据。我有工厂要返回数据。下面是代码。

function fillperiod(fillperiodService) {
  fillperiodService.getData().then(function(res) {
    $scope.cal = response.data.data.Period;
  });
}
myapp.factory('fillperiodService', ['$http', '$cookieStore', 'cfg', '$q', function($http, $cookieStore, cfg, $q) {
  var baseurl = cfg.Baseurl;
  var urlapi = baseurl + "api/Vehicle/GetEMIPeriod";
  return {
    getData: function() {
      var q = $q.defer();
      $http.get(urlapi).then(function(response) {
        q.resolve(response);
      }, function(error) {
        q.reject();
      })
      return q.promise;
    }
  }
}]);


上面的代码抛出错误:


  无法读取未定义的属性“ getData”。


我已经声明了方法getData。我不确定以上代码中缺少什么。我可以得到一些帮助来解决此问题吗?任何帮助,将不胜感激。谢谢。

最佳答案

似乎工厂没有注入您的控制器。因此,在函数内部,未定义fillperiodService。将工厂注入到要从中调用其方法之一的控制器中。那么它将起作用。

EDIT :
myapp.controller('fillPeriod', ['fillperiodService', function(fillperiodService){
    //here you can call your fillpersiodService.methodName
}])

关于javascript - AngularJS无法从JavaScript函数调用工厂方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45190728/

10-11 22:29
查看更多