AngularJS:无法访问服务方法

时间:2014-10-15 05:19:37

标签: angularjs

我正在学习如何使用服务来减少我的控制器。

我创建了一个plunker,我将返回此错误:错误 - TypeError:undefined不是指向此行的函数“.then(function(crops){”

这是我的index.html(非常简单)

<body ng-controller="MainController">
    <pre>{{selectedCrops | json}}</pre>
</body>

这里是script.js

(function(){
  angular.module('app',[]);

  angular.module('app')
    .service('LoanSvc', function($http, $q){
      this.getSelectedCrops = function(){
        return {
          show_corn: true,
          show_beans: true,
          show_sorghum: true,
          show_wheat: true,
          show_cotton: true,
          show_rice: true,
          show_peanuts: true,
          show_sugarcane: true
        };
      }
    });

  angular.module('app').controller('MainController', function($scope, LoanSvc){
    LoanSvc.getSelectedCrops()
      .then(function(crops){
        $scope.selectedCrops = crops;
      })
  });
}());

任何指导都令人垂涎!

提前致谢。

1 个答案:

答案 0 :(得分:1)

由于您的服务不进行任何HTTP查询,只返回包含数据的对象,因此您无需使用.then() LoanSvc.getSelectedCrops()的返回值。

相反,您可以直接在控制器中使用该值:

$scope.selectedCrops = LoanSvc.getSelectedCrops();

最终,您可能希望修改服务以从服务器获取数据。这就是您将$http注入服务的原因。因此,您可以修改LoanSvc.getSelectedCrops()函数以使用返回$http.get()的{​​{1}}。执行此操作时,您将能够使用$promise函数来处理来自服务器的异步响应。

您可以像这样修改服务以查询服务器:

then()