2017-04-25 86 views
-2

在我的Angular應用程序中,我通過API調用返回結果,並允許用戶通過一系列複選框選擇來過濾這些結果。現在我遇到了一個問題,雖然當爲某個過濾器發送一個值時會返回預期結果,但如果選擇了多個值(例如,通過多個郵政編碼進行過濾),我會將零結果打印到風景。沒有錯誤,只是沒有結果。我終於在使用Chrome devtools網絡選項卡後,發現問題在於,而不是在有效載荷中用引號括住每個項目 - 就像這樣:「90001」,「90002」,什麼是發送的是:「90001,90002」。換句話說,引號就像是一個值而不是兩個一樣。發送值作爲一個字符串而不是個別值發送

這是代碼,在這裏我使用的是「加盟」放在一起選擇了值:

this.sendZipcode.emit(this.zipcodeFilters.text = arr.length === 0 ? undefined : arr.join(',')); 

我不知道我該怎麼調整這個「加盟」的方式是構造或找到其他解決方案而不是「加入」,以便讓每個項目都包含在引號中,而不是像一個長字符串一樣包裝。

僅供參考,這是我在選擇兩個郵編後在Chrome devtools的網絡選項卡中看到的內容。正如我所解釋的,它裹得像一個字符串,而不是兩個值:

addresses.zipCode: {$in: ["90001, 90002"]} 

回答

1

Array.prototype.join將返回一個字符串。所以你正在將你的數組轉換爲一個字符串作爲字符串發送。你想發送一個數組。直接刪除join電話並返回arr

字符串: 「值,值」

陣列: 「值」, 「值」

+0

由於@ChrisG。我會嘗試一下。 – Muirik

+0

那麼,發送這樣的東西?這個.zipcode.emit(this.zipcodeFilters.text = arr.length === 0?undefined:arr); – Muirik

相關問題