2016-02-29 2 views
0

У меня есть функция, которая вызывается от моего контроллера к моей службе.

GridService.getHeaders($scope.grid); 

Сервис находится ниже ...

function getHeaders(grid){ 
    var deferred = $q.defer(); 
    $http.put('v1/headers', grid).success(function (data) { 
     deferred.resolve(data); 
    }).error(function (data, status, headers, config) { 
     deferred.reject(data); 
    }); 
    return deferred.promise; 
} 

Мне нужно получить данные, я получаю от этого и установить его в переменной $ области действия в мой контроллер ...

$scope.headers = (Data from getHeader function) 

Которая затем будет введена в эту функцию. Извините, если это все кажется запутанным ... Как это у меня было изначально, просто установили

$ scope.headers = GridService.getHeaders ($ scope.grid);

Однако $ scope.headers всегда возвращает пустой.

function getFullHeaders(headers, highlightFilteredHeader){ 
     var returnArray = []; 

     for(var i = 0; i < headers.length; i++){ 
      returnArray.push({ 
       field: headers[i].key, 
       displayName: headers[i].name, 
       enablePaginationControls: true, 
       headerCellClass: highlightFilteredHeader, 
       enableFiltering: true, 
       enableSorting: true, 
       visible: true, 
       filter: { term: "", } 
      }); 
     } 

     return returnArray; 
} 
+1

Попробуйте задание в .then() обратного вызова, что-то вроде GridService.getHeaders ($ scope.grid) .then (функция (результат) {$ scope.headers = результат}, функция (ошибка) {// ошибка}); –

ответ

1

Ваш метод getHeaders возвращает обещание. Поэтому, если вы хотите отреагировать на обещанное обещание, вы должны использовать .then(fn).

Try:

GridService.getHeaders($scope.grid).then(function(response) { 
    $scope.headers = response; 
}); 
+0

Могу ли я оставить обещание, которое возвращается в GridService? – Buccaneer

+0

Я не совсем уверен, что вы имеете в виду, но в основном, да, вы можете хранить обещания в любом месте. Но не поймите меня неправильно, вы, вероятно, не должны. Вы должны рассматривать обещания как свой особый вид. Вы не должны хранить их дольше, чем они не решены. – JanS

+0

Nevermind, однако я получаю неожиданный токен ILLEGAL – Buccaneer