2016-11-04 5 views
0

Ich bin neu zu eckigen js. Hier habe ich den Code: Ich erhalte die Antwortdaten wie Nummer. In diesem Code weise ich die Antwortdaten als $ scope.vote_counting zu. In diesem Code gibt nichts zurück.

$scope.votes = function(){ 
     var votes = $http({ 
       method: "post", 
       url: "/getVotes", 
       data: { id: $scope.Id} 
      }).success(function(response){ 
      }); 
      return votes; 
    } 

Bitte jemand helfen zu diesem.

Antwort

3

Rufen Sie einfach die $http. Dabei spielt es keine

in Funktion sein muß
$http({ 
    method: "post", 
    url: "/getVotes", 
    data: { id: $scope.Id } 
}).then(function(response) { 
    //handle success 
    $scope.votes_counting = response.data; 
}, function(error){ 
    //handle error 
}); 

Die Sortier Version ist

$http.post("/getVotes", { id: $scope.Id }).then(function(response) { 
    //handle success 
    $scope.votes_counting = response.data; 
}, function(error) { 
    //handle error 
}) 

Hinweis: Sie eine POST-Methode, sondern eine GET-Methode scheint besser geeignet, in Ihrem Fall (getVotes)

0

Die $ http-Funktion gibt die Antwort des Servers nicht zurück. Aber wie Sie bereits herausgefunden haben, können Sie die Erfolgsfunktion verwenden, um die Serverantwort zu erhalten. Einfach gesetzt, wie dies $scope.votes Wert in der Erfolgsfunktion:

$http({ 
    method: "post", 
    url: "/getVotes", 
    data: { id: $scope.Id} 
}).success(function(response){ 
    $scope.votes = response 
}); 
0

Der einfachste wahrscheinlich $http.post Verwendung ist. Beachten Sie, dass success für then veraltet:

$scope.retrieveVotes = function(){ 
    $http.post('/getVotes', {id : $scope.id}).then(function(response){ 
    $scope.votes = response.data; 
    }); 
} 

Beachten Sie auch, dass $http Anrufe asynchron sind so retrieveVotes Aufruf auch asynchron ist.

+0

Warum '$ http.post()'? – Weedoze

+0

@Weedoze Weil es eine Abkürzung für '$ http ({Methode: 'POST', ..)' 'Ihren Code lesbarer und prägnanter macht –

+0

Oh ja, ich habe nicht gesehen, dass er einen Beitrag verwendet hat ... Selbst wenn Die URL ist 'getVotes' – Weedoze

1

Ich habe ein Snippet hinzugefügt, das die grundlegende Handhabung von Versprechen zeigt. Hier habe ich einen Dienst verwendet, um einen http-Aufruf zu verspotten. Die Antwort wird an eine Bereichsvariable angehängt, die in der Ansicht angezeigt wird.

angular.module('TestApp', []) 
 
    .factory('MockHttp', function($q) { 
 
    return { 
 
     getMockData: function() { 
 
     return $q.when(['A', 'B', 'C']); 
 
     } 
 
    }; 
 
    }) 
 
    .controller('TestController', function($scope, MockHttp) { 
 
    $scope.res = null; 
 

 
    MockHttp.getMockData() 
 
     .then(function(res)  { 
 
     $scope.res = res; 
 
     }) 
 
     .catch(function(err) { 
 
     console.log(err); 
 
     }); 
 

 
    });
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 

 
<div ng-app="TestApp"> 
 
    <div ng-controller="TestController"> 
 
    {{res}} 
 
    </div> 
 
</div>