2016-02-24 3 views
0

Я новичок в angularJS, и я попытался сделать сервис для обработки HTTP-запросов.Трудности для обслуживания в angularJS

Так вот моя служба:

var app = angular.module("myApp", ['base64']); 

/* Main controller 
================================================== */ 

app.controller("MainCtrl", ["$scope", "HTTPrequest", 
    function($scope, HTTPrequest) { 
     $scope.data = HTTPrequest.getAllVideos(); 
    } 
]); 

/* Service which handles HTTP requests 
================================================== */ 

app.service("HTTPrequest", [ "$http", "$base64", 
    function($http, $base64) { 

     //Getter pour la variable videos 
     this.getAllVideos = function($http, $base64) { 

      // Authentification for HTTP request on RESTHeart server 
      $http.defaults.headers.common["Authorization"] = 'Basic ' + $base64.encode("LOGIN" + ":" + "PASSWORD"); 

      $http({ 
       method: 'GET', 
       url: 'http://localhost/db/videos', 
      }).then(
       function successCallback(response) { 
       var videos = response.data; 
       return videos; 
       }, 
       function errorCallback(response) { 

       } 
      ); 

     }; 

    } 
]); 

И в моей Chrome консоли у меня есть эта ошибка, которая относится к Authentification линии:

TypeError: Cannot read property 'defaults' of undefined

мне удалось сделать мою просьбу без обслуживания, но невозможно воспроизвести с помощью службы: (

Спасибо, что помогли мне

ответ

1

Изменить

this.getAllVideos = function($http, $base64) { 

в

this.getAllVideos = function() { 

Вы не хотите, чтобы передать любой аргумент при получении видео. И $ http и $ base64 услуги вводятся в функцию конструктора службы.

Вы также забыли вернуться с вашей функции. Заменить

$http({ 

по

return $http({ 

И как только это будет сделано, заменить

$scope.data = HTTPrequest.getAllVideos(); 

по

HTTPrequest.getAllVideos().then(function(videos) { 
    $scope.data = videos; 
}); 

Вы должны также удалить пустые EROR обратного вызова из $ HTTP вызов. Прочитайте http://blog.ninja-squad.com/2015/05/28/angularjs-promises/, потому что вы попадаете во многие ловушки.

+0

Спасибо, он решает проблему. У меня больше нет ошибки. У меня нет моего результата, но это может происходить из другого места! – ImbaBalboa

+0

Большое спасибо за ваше редактирование, оно работает! Мне все еще трудно понять философию angularJS ... (Merci puisque français;)) – ImbaBalboa

Смежные вопросы