2017-01-13 3 views
1

Я создаю базовое приложение для загрузки списка текущих инцидентов. У меня была базовая система CRUD, в которой я сконструировал все свои функции в контроллере. Я был рекомендован использовать угловые пользовательские сервисы вместо наложения на многие функции контроллера.Угловая - Не удается получить услугу, чтобы получить успешный 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"); 

    }; 
}); 

Контроллер:

app.controller('AppController', function (MyService, $scope) { 
$scope.configurations = function() { MyService.sayHello() }; 
}); 

ответ

-1

Прежде всего вы не инъекционного $^и $ HTTP в службе. Во-вторых, вы не используете $ q для разрешения или отклонения. В-третьих, это $ q избыточно, чтобы создать обещание от $ q, так как служба $ http возвращает обещание.

пожалуйста, рассмотрим следующий код:

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 
     }) 
    }); 

если вы хотите кэшировать ответ внутри службы, чтобы извлечь его из нескольких контроллеров, пожалуйста, дайте мне знать .. я могу переписать код таким образом .. надежда это поможет вам .. cheers

+0

Привет Adrian благодарит за быстрый ответ, мне нужно только вызвать сервисную функцию только один раз (при загрузке страницы) и кэшировать его для повторного использования в моем контроллере. Как бы вы это восприняли в этом смысле? –

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