2014-10-15 4 views
0

Я просто изучаю, как использовать сервисы для уменьшения моих контроллеров.AngularJS: невозможно получить доступ к методу службы

Я создал plunker и я возвращаю эту ошибку: Ошибка - TypeError: не определено не функция, указывающий на этой линии «.Затем (функция() {культур»

Вот мой 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

Поскольку ваша служба не делает никаких HTTP-запросов и просто возвращает объект с данными, вам не нужно использовать .then() с возвращаемым значением для LoanSvc.getSelectedCrops().

Вместо этого, вы можете просто использовать значение непосредственно в контроллере:

$scope.selectedCrops = LoanSvc.getSelectedCrops(); 

В конце концов, вы, вероятно, хотите изменить службу, чтобы получить данные с сервера. Вот почему вы вводите в услугу $http. Таким образом, вы можете изменить свою функцию LoanSvc.getSelectedCrops(), чтобы использовать $http.get(), которая возвращает $promise. Когда вы это сделаете, вы сможете использовать функцию then() для обработки асинхронного ответа с сервера.

Вы можете изменить свой-то услугу, как это сделать запрос к серверу:

angular.module('app') 
    .service('LoanSvc', function($http, $q){ 
     this.getSelectedCrops = function(){ 
      return $http.get('some_url/get_crops'); 
}); 
Смежные вопросы