2015-05-08 2 views
0

Я написал угловую службу js, которая возвращает ответ. Но когда я попытался вызвать службу с контроллера, я не смог получить точный ответ.Не удалось получить ответ от угловой службы js

app.service('testservice', function($http){ 
var details= {}; 
details.getResponse = function() { 
     return $http({ 
      url: 'send/getdata', 
      method: 'GET' 
     }).success(function(data, status, headers, config) { 
      this.getdata = data; 
      return getdata; 
     }); 
    }; 
    return details; 

});

Я использую контроллер ниже для вызова метода.

app.controller('testcontroller',[ '$scope', '$http','testService',function($scope, $http,testService) { 
     var targetresponse = testService.getResponse(); 
     alert(JSON.stringify(targetresponse)) 
    })]); 

Я получаю ниже ответ { "$$ состояние": { "статус": 0, "до": [[{ "Обещание": { "$$ состояние": { "статус ": 0}}}, null, null, null]]}}

Пожалуйста, дайте мне знать об ошибке здесь.

ответ

1

Ваш testservice сервис getResponse метод должен вернуть обещание, и вы можете продолжить эту цепочку обещаний внутри своего контроллера.

Сервис

details.getResponse = function() { 
    return $http({ 
     url: 'send/getdata', 
     method: 'GET' 
    }).then(function(res) { 
     this.getdata = res.data; 
     return res.data; 
    }); 
}; 

Вы можете использовать решительность, которые обещают и получить доступ к данным внутри .then функции

var targetresponse = testService.getResponse(); 
targetresponse.then(function(data){ 
    alert(JSON.stringify(data)) 
}) 
+0

Это вам помогло? –

0
Srv.getData().then(function (success) { 
     var data = success.data; 
     $scope.myData = data; 
    }, function (error) { 
    }); 

Лучший способ для этого.

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