#javascript #angularjs #ngresource
#javascript #angularjs #ngresource
Вопрос:
Я использую Angular с ngResource, и у меня есть URL-адрес api:
GET http://my.com/rest/items?inState=TRANSIENTamp;inState=FINAL
Как я мог бы выполнить запрос с двумя (не uniq) параметрами ‘inState’?
Это моя фабрика ресурсов:
.factory('Resource', function ($resource, REST_URL) {
return {
items: $resource(REST_URL 'rest/items',
{},
{
get: {method: "GET", params: {inState: '@inState'}}
})
};
})
И именно так я это называю:
//GET http://my.com/rest/items?inState=TRANSIENT
Resource.items.get({inState: 'TRANSIENT'}, function (data) {
//...
}, function (responce) {
//...
});
Это работает, но проблема в том, как я отправляю параметры как объект: {inState: ‘TRANSIENT’}
Я не могу написать что-то вроде
{inState: 'TRANSIENT', inState: 'FINAL'}
из-за полей должно быть uniq
PS Я знаю, что это может быть сделано с помощью $ http.
Ответ №1:
Вот как это сделать:
{inState: ['TRANSIENT', 'FINAL']
Пример:
//GET http://my.com/rest/items?inState=TRANSIENTamp;inState=FINAL
Resource.items.getHistory({inState: ['TRANSIENT', 'FINAL']}, function (data) {
//...
}, function (responce) {
//...
});
Ответ №2:
Не уверен, что у вас есть контроль над тем, что потребляет параметры, но если вы это сделаете, вы можете попробовать передать параметры как объект с массивом объектов в нем, например:
{ states : [{inState : 'TRANSIENT'}, {inState : 'FINAL'}]}
Затем просто выполните итерацию по states
массиву и проверьте каждое inState
свойство.