2016-04-07 1 views
0

у меня есть макет сервер, реагирующие с некоторыми данными

backendMock.run(function($httpBackend){ 
 
     $httpBackend.whenGET('views/login.html').passThrough(); 
 
     $httpBackend.whenGET('views/home.html').passThrough(); 
 
     $httpBackend.whenGET('views/quote.html').passThrough(); 
 

 
    var quotes = [{quote:'aint bout how hard you hit'}]; 
 

 
    $httpBackend.whenGET('/quotes').respond(quotes); 
 

 
    
 
      
 
    }); 
 

для извлечения данных из этого макете сервера я использую $ службу HTTP

app.controller("quoteCtrl",['$scope','$stateParams','$http',function($scope,$stateParam,$http){ 
 
    
 
    $scope.myquote=$stateParam.id; 
 
    $http.get('/quotes').success(function(data){ 
 
     alert(data.quote); 
 
    }); 
 
    
 
    }]);

Проблема в том, что я могу ударить по серверу, но я не получаю никаких данных назад

ответ

0

quotes еще не определен в то время как $httpBackend.whenGET('/quotes').respond(quotes);. Определите его до.

Также отображается код data.quotes, но data является [{quote:'aint bout how hard you hit'}];. Таким образом, это не объект, а массив, содержащий один элемент, и этот элемент является объектом с атрибутом с именем quote, а не quotes.

Так что код должен быть довольно

alert(data[0].quote); 

Вы также не должны использовать success(): это не рекомендуется. Используйте then():

$http.get('/quotes').then(function(response){ 
    alert(response.data[0].quote); 
}); 
+0

не работает я пытался благодаря коррекции хотя – Shubham

+0

Если вы хотите помочь, вы должны быть более точным, чем «не работает». Что вы ожидаете, и что происходит вместо этого? –

+0

спасибо, что он работает отлично. я не рассматривал данные как массив, который был probblrm – Shubham

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