2016-06-14 2 views
1

У меня есть следующий WEB API:REST AngularJS @Resource параметризованном запроса

GET  List<EventHistory> '/service/eventhistories' 
GET  EventHistory  '/service/eventhistories/{id}' 
DELETE EventHistory  '/service/eventhistories/{id}' 
PUT  EventHistory  '/service/eventhistories' 
POST EventHistory  '/service/eventhistories' 

Использование углового я хочу использовать @Resource, чтобы получить информацию от сервера.

angularApp.factory('eventHistoryFactory', function ($resource) { 
    return $resource('/inner/service/eventhistories/:id',{id:'@id'}); 
}); 

Но с использованием этого объявления у меня нет API для запроса страницы на основе некоторых данных.

var pageRequest = { 
    size: size, 
    page: page 
}; 

или отправить обновления для EventHistory объекта.

+0

Я не совсем уверен, что понимаю. Вы занимаетесь разбиением на страницы или фактом, что у вас нет реализации бэнд-страниц? –

+0

У меня есть обратная связь и разбиение на страницы, но я не могу отправить запрос на бэкэнд с идентификатором (параметр inRow) и доступными для просмотра данными одновременно. я знаю, это должно быть что-то вроде eventHistoryFactory.get (pageRequest, функция (данные) { controllerScope.eventHistorySingle = данные; }) но как я должен добавить идентификатор запроса, если я обновить сущность? – Sergii

+0

Короткий ответ - вы этого не делаете. угловое делает это для вас. проверьте мой ответ ниже. –

ответ

2

Основываясь на комментарий OP в:

Допустим, вы хотите обновить одну сущность:

.controller('someCtrl', function($stateParams, eventHistoryFactory){ 
//For the sake of the demonstration - id comes from the state's params. 
var eventHistory = eventHistoryFactory.get({id: $stateParams.id}); 

eventHistory.$promise.then(function(){ 
    //Modify the entity when HTTP GET is complete 
    eventHistory.address = 'New York'; 

    //Post the entity 
    eventHistory.$save(); 

    //If you wish to use PUT instead of POST you should declare that 
    //in the class methods of $resource 
}); 



//Another example using query 
var entries = eventHistoryFactory.query({ 
    page: 0, 
    size: 20, 
    before: Date.now() 
}); 

//This is translated into GET /inner/service/eventhistories?page=0&size=20&before=111111111111 
//and should be interpreted correctly by your backend. 

entries.$promise.then(function(){ 
    //entries now contain 20 first event history with date earlier than now. 
    var specificEntry = entries[0]; 

    //Same deal - modify the entity when HTTP GET is complete 
    specificEntry.address = 'New York'; 

    //Post the entity 
    specificEntry.$save(); 
}); 
1

первый ответ, кажется, хорошо, но я думаю, что этот путь более понятным и просто для начинающих:

eventHistoryFactory.get(pageRequest, function (returnData) { 
     console.trace('request processed successfully: ' + returnData); 
     params.total(returnData.totalElements); 
     $defer.resolve(returnData.content); 
    }, function (error) { 
     console.log('request processed with error: ' + error); 
    }) 

Чтобы сделать запрос страницы динамическим способом, объект должен быть создан перед запросом из текущих свойств ngTable (используйте API ngTable).

Обращайте внимание на eventHistoryFactory. У него нет параметра для объекта pageRequest, но он работает - божественная магия. По запросу GET в URL-адресе вы можете увидеть:

?page=2&size=25 
Смежные вопросы