2013-08-26 38 views
27

發送參數數組我有一個這樣的API通過GET參數發送濾波器陣列:如何通過GET與Restangular

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

,如果我直接發送對象現在這個樣子:

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

真正發送的查詢是

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

如何發送一個真正的數組? 我應該考慮替代方案嗎?

+0

出於好奇,哪裏或你是如何看到查詢輸出是什麼? –

+0

@丹Jimenez在任何瀏覽器的開發人員工具中的網絡選項卡:)這應該有所斬獲。 – diosney

回答

19

我發現了一個辦法做到這一點,我必須遍歷過濾對象來創建與[]的名稱的新對象:

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

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

農產品:

&filters%5Bnickname%5D=test 

有人有更好的解決辦法

11

試試這個:

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

這個答案是如何工作的 - 使用'Restangular' 1.4.0和嵌套數組參數不被轉換成適當的http查詢字符串。你是否能夠得到上面的代碼工作? –

7

,如果你有很少和控制的參數,就可以使用這種方式。

假設你有幾個過濾器:

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

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

我希望這可以幫助您。

+0

你的例子保存了我的一天:)謝謝 – diosney

7

字符串化使用JSON

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

轉化爲

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

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

感謝發佈,這是對這個問題最直接的解決方案:) –