2015-09-20 5 views
0

Это мое первое угловое приложение js. Я пытаюсь сделать http-запрос и получить ответ.

app.service('info',['$http',function($http){ 

       var details=function (query) { 
          $http({ 
          method:'GET', 
          url:'http://api.openweathermap.org/data/2.5/forecast/daily', 
          params:{q:query,cnt:8} 
          }).then(function (response){ 

          console.log(response.data); 
          return response.data; 

          },function (response){ 
           console.log('s'); 
          }); 
         }; 

       return {details:details} 

      }]); 

И это мой контроллер:

app.controller("search",['$scope','$routeParams','info',function($scope,$routeParams,info){ 

      if ($routeParams.param) { 
       var d=info.details($routeParams.param); 
        d.then(function (r){ 
         console.log("success"); 
        },function (e){ 
         console.log("fail"); 
        }); 
}]); 

Но используя это показывает "Cannot read property 'then' of undefined" .I прочитал решение подобных проблем здесь, и это было рабочим решением многих проблем, но я не немогу попасть туда, куда его будет ужасно неправильно

тоже объяснить это утверждение:.

return {details:details} 
+0

возвратных {подробность: подробности}: Информационный сервис возвращает объект буквального с подробной информацией (имя): детали (стоимость) .. –

+0

последнего утверждения в основном публикует ваши 'details' функцию, так что вы можете вызвать его из контроллер. в противном случае это просто var внутри вашей сервисной функции и находится внутри закрытой за пределами области охвата из-за обзора – charlietfl

ответ

3

В вашей функции, вам нужно вернуть $ http().

var details=function (query) { 
     return $http(...); 
    };