2013-10-09 4 views
0

Я читаю хорошие вещи о restangular, но я не знаю, как переключиться с моей текущей конфигурации, использующей $ resource.

вот моя текущая настройка работы с $ ресурса:

внутри service.js:

.factory('List', function($resource) { 
    return $resource('relative/url/to/json/:type/:id', { type:'@type', id:'@id' }); 
}) 

разные контроллеры используют эту услугу:

• "детали" контроллера

.controller('DetailCtrl', ['$scope', '$routeParams', 'List', function($scope, $routeParams, List) { 
    var p = {'type': $routeParams.type, "id": $routeParams.id }; 
    List.get(p, function(detail, responseHeaders) { // success callback 
     $scope.detail = detail; 
     // do something with responseHeaders 
    }); 
}]) 

• "Список" контроллер:

.controller('ListCtrl', ['$scope', 'List', function($scope, List) { 
    var params = { sort: 'DESC', limit: 8 }; 
    $scope.loadList = function (type, params) { 
     params.type = type; 
     List.query(params, function(list, responseHeaders) { // success callback 
      $scope.list = list; 
      // do something with responseHeaders 
     }); 
    } 
}]) 

я хочу, чтобы заменить все вещи $ ресурсов с restangular.

после конфигурации Restangular является извлечение ДАННЫХ в основном способе, как это:

• внутри "подробно" контроллер

$scope.elm = Restangular.one($routeParams.type, $routeParams.id).get(); 

• внутри "список" контроллер

var params = { sort: 'DESC', limit: 8}; 
$scope.loadList = function (type, params) { 
    $scope.list = Restangular.all(type).getList(params); 
} 

это работает. но сейчас:

1. Как можно получить заголовки ответов?

2. Как можно отправить данные в область внутри функции обратного вызова успеха?

ответ

0

Ну, я полагаю, для вас уже слишком поздно, но, возможно, это может помочь другим.

Для вопрос # 1, я нашел это на restangular github:

setFullRequestInterceptor

fullRequestInterceptor похож на requestInterceptor но более мощным. Он позволяет вам изменять элемент, параметры запроса и заголовки.

Это функция, которая получает то же самое, что и requestInterceptor плюс заголовки и параметры запроса (в указанном порядке).

Он должен возвращать объект со следующими свойствами:

заголовки: Заголовки для отправки

Params: Параметры запроса для отправки

элемент: Элемент для отправки

httpConfig : HttpConfig для звонка с

Вы можете сделать это t его путь (редактирование: я думаю, что в этой функции вы также можете установить данные области, меняя код):

Restangular.setFullResponse(true); 
Restangular.setResponseInterceptor(function (data, operation, what, url, response, deferred) { 
    var contentType = response.headers['Content-Type']; // this to get content-type 
    var status = response.headers['Status']; // here we obtain the http response status 

    // now we can mount our own js object to return all we need 
    // i.e.: the status, content-type and response data to be processed into another function 
    var myArray = [contentType, status, response.data]; 
    // i think we can also set scope data 
    $scope.myData = response.data; 

    return myArray; 
}); 
Смежные вопросы