2017-01-13 65 views
1

我正在构建一个基本应用程序来加载当前正在进行的事件列表。我有一个基本的CRUD系统,我在控制器中构建了所有的功能。我被推荐使用Angular定制服务,而不是在控制器上堆积很多功能。Angular - 无法获取服务以获得成功的HTTP请求

我现在正在将我的代码重新定制到一个自定义服务中,但无法完全掌握结构。下面是我有这么远,但此刻我正在错误Unexpected token .我的服务代码,在这条线var configurations.data_result_1 = configurations.data_result_1.split("\r\n");

我得到一个感觉,我的代码是完全错误的,但不能挺在网上找到立足自己类似的情况上。希望得到一些帮助。以下是我走到这一步:

服务:

var GDI_configurations = {}; 

app.service('MyService', function() { 
    this.sayHello() //fetch data on page load. 

    this.sayHello = function() { 
    var deferred = $q.defer(); 
    $http({ 
     method: 'GET', 
     url: 'AJAX PATH', 
     headers: { "Accept": "application/json;odata=verbose;charset=utf-8"} 
    }).then(function(data){ 

     var configurations = data; 
     var configurations.data_result_1 = configurations.data_result_1.split("\r\n"); 
     var configurations.data_result_2 = configurations.data_result_2.split("\r\n"); 

    }; 
}); 

控制器:

你不注入$ Q的
app.controller('AppController', function (MyService, $scope) { 
$scope.configurations = function() { MyService.sayHello() }; 
}); 

回答

-1

第一和$ HTTP的服务。 其次,您并未使用$ q来解析或拒绝。 由于$ http服务返回承诺,因此从$ q创建承诺是$ q冗余。

请考虑下面的代码:如果你希望缓存里面的服务响应从多个控制器检索请让我知道..我可以改写这样的方式代码

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

     this.sayHello = function() { 
      return $http({ 
       method: 'GET', 
       url: 'AJAX PATH', 
       headers: { "Accept": "application/json;odata=verbose;charset=utf-8"} 
      }); 
     }; 
    }); 



    app.controller('AppController', function (MyService, $scope) { 
     $scope.configurations = null; 
     MyService.sayHello().then(function(data){ 
      $scope.configuration = data; 
      $scope.configurations.data_result_1 = $scope.configurations.data_result_1.split("\r\n"); 
      $scope.configurations.data_result_2 = $scope.configurations.data_result_2.split("\r\n"); 
     }, function(error){ 
      // some error occurred 
     }) 
    }); 

..希望这可以帮助你..干杯

+0

嗨阿德里安感谢您的快速响应,我只需要调用服务功能(一次页面加载)并缓存它在控制器中重用它。在这个意义上你如何解决它? –