我正在学习如何使用服务来减少我的控制器。
我创建了一个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;
})
});
}());
任何指导都令人垂涎!
提前致谢。
答案 0 :(得分:1)
由于您的服务不进行任何HTTP查询,只返回包含数据的对象,因此您无需使用.then()
LoanSvc.getSelectedCrops()
的返回值。
相反,您可以直接在控制器中使用该值:
$scope.selectedCrops = LoanSvc.getSelectedCrops();
最终,您可能希望修改服务以从服务器获取数据。这就是您将$http
注入服务的原因。因此,您可以修改LoanSvc.getSelectedCrops()
函数以使用返回$http.get()
的{{1}}。执行此操作时,您将能够使用$promise
函数来处理来自服务器的异步响应。
您可以像这样修改服务以查询服务器:
then()