无法在AngularJS服务中返回对象类型

时间:2016-04-10 07:52:27

标签: angularjs service

我需要我的服务从服务器返回带有信息的json。

服务守则:

import re

s=open('C:/Users/Tamal/Desktop/py_regex_sample.txt', 'r')
re.sub(r'(\w)+\s(\w)+', r'<fname>\1</fname>\n<sname>\2</sname>', s, 0, flags=re.I)
s.close()

这是来自控制器的代码。

"John Hammond
Joey Mercury"

请求服务器成功,但函数返回undefined。 我还尝试在服务中的fetch()之前添加return语句,以及我在日志中得到的内容:

 app.service('Server', function () {

  this.fetch = function (data, token) {
     fetch('http://104.197.58.108:8080', {
            method: 'post',
            headers: {
              'Accept': 'application/json',
              'Content-Type': 'application/json'
            },
          body: JSON.stringify({
              data: data,
              token: token
            })
        })
          .then(function(response) { 
            return response.json()
          }).then(function(text) {
            if (text.success == false) {
              return false;
            } else {
              return text;             
            }          
          })
  }
})

2 个答案:

答案 0 :(得分:0)

你的fetch()方法目前没有返回任何内容。所以它实际上会返回undefined

所以你要添加一个return语句。这将使函数返回一个承诺。它不能返回数据,因为fetch是一个异步操作。所以它返回了一个承诺。这意味着来电者必须

$scope.materialist = Server.fetch($scope.data2, $rootScope.token);

必须改为

Server.fetch($scope.data2, $rootScope.token).then(function(data) {
    $scope.materialist = data;
});

答案 1 :(得分:0)

 app.service('Server', function ($http) {

   this.getData = function(){
     var promise = $http({
     method : 'GET',
     url: 'http://104.197.58.108:8080'
   }).then(function(data){
      return data;
     }, function(error){
       return error;
    });
    return promise;
   }

现在在控制器内部,调用服务的方法,将数据分配给范围变量,并根据需要进行迭代/解析。

Server.getData().then(function(response){

$scope.fetchedData = response;

//Open the Sources tab by pressing in dev tools and see the format of the   response by setting debugger points.  
// or $scope.fetchedData and parse and assign the values accordingly.

});

我觉得您不需要为JSON格式显式设置标头对象。如果你以后需要设置标题,你总是可以通过在$ http方法中添加与你所做的几乎相同的格式来实现。 有关$ http的更多信息,请参阅ngdocs