2013-08-26 5 views
27

muszę wysłać tablicę filtrów poprzez parametry GET w API jak ten:Jak wysłać tablicę parametru przez GET z Restangular

/myList?filters[nickname]=test&filters[status]=foo 

Teraz, jeśli mogę wysłać przedmiot bezpośrednio tak:

Restangular.one('myList').get({filters: { 
    nickname: 'test', 
    status: 'foo' 
}}); 

zapytanie wysłane jest naprawdę

?filters={"nickname":"test","status":"foo"} 

Jak wysłać prawdziwą tablicę? Czy mogę pomyśleć o alternatywie?

+0

Z ciekawości, gdzie i jak widzisz, co wyjście zapytanie jest? –

+0

Zakładka @Dan Jimenez Network w narzędziach programistycznych w dowolnej przeglądarce internetowej :) To powinno wystarczyć. – diosney

Odpowiedz

19

znalazłem sposób, aby to zrobić, muszę iteracyjne nad obiektem filtra, aby utworzyć nowy obiekt z [] w nazwie:

var query = {}; 
for (var i in filters) { 
    query['filters['+i+']'] = filters[i]; 
} 

Restangular.one('myList').get(query); 

Produce:

&filters%5Bnickname%5D=test 

Ktoś mieć lepsze rozwiązanie?

11

Spróbuj tego:

Restangular.all('myList').getList({filters: { 
    nickname: 'test', 
    status: 'foo' 
}}); 
+1

Ta odpowiedź brzmi: jak to powinno działać - używając 'Restangular' 1.4.0 i zagnieżdżonych parametrów tablicy, które nie są konwertowane na odpowiedni łańcuch zapytania HTTP. Czy udało ci się uzyskać powyższy kod do pracy? –

7

jeśli masz bardzo mało i kontrolowanych parametrów, można użyć w ten sposób.

Zakładając, że masz kilka filtry:

var api = Restangular.all('yourEntityName'); 
    var params = { commonWay   : 'value1', 
        'filter[property1]' : filterVariable1, 
        'filter[property2]' : filterVariable2 
       }; 

    api.getList(params).then(function (data) { 
     alert(data); 
    }); 

Mam nadzieję, że to pomoże.

+0

Twój przykład uratował mój dzień :) Dzięki – diosney

7

stringify zawartość za pomocą JSON

{ 
    "startkey": JSON.stringify(["Forum-03fa10f4-cefc-427a-9d57-f53bae4a0f7e"]), 
    "endkey": JSON.stringify(["Forum-03fa10f4-cefc-427a-9d57-f53bae4a0f7e", {}]), 
} 

przekłada się

?endkey=%5B"Forum-03fa10f4-cefc-427a-9d57-f53bae4a0f7e",+%7B%7D%5D&startkey=%5B"Forum-03fa10f4-cefc-427a-9d57-f53bae4a0f7e"%5D 

tj

?endkey=["Forum-03fa10f4-cefc-427a-9d57-f53bae4a0f7e",{}]&startkey=["Forum-03fa10f4-cefc-427a-9d57-f53bae4a0f7e"] 
+0

Dzięki za ogłoszenie, jest to najbardziej bezpośrednie rozwiązanie tego problemu :) –