2016-10-31 24 views
1

我創建一個模板,文字,像這樣:將cookie的值設置爲模板文字?

const someVar = 'hello'  

const str = ` 
    Some random 
    multiline string with string interpolation: ${someVar} 
` 

然後在我的興亞應用程序,我做:

this.cookies.set('str', str) 

顯然,它不喜歡的多行字符串,因爲它給出這個錯誤:

TypeError: argument value is invalid

有沒有辦法解決這個問題?在我的情況下保留空白格式是非常必要的。

回答

2

這與模板文字無關;當你遇到錯誤時,你有一個帶有換行符的字符串。您不能在cookie值中添加換行符。

可能保存那些加入新行,最好的辦法是使用JSON:

this.cookies.set('str', JSON.stringify(str)); 

當然,你使用它的時候就需要JSON.parse它。

當然,您不必使用JSON;你可以使用URI編碼:

this.cookies.set('str', encodeURIComponent(str)); 

...然後將它與decodeURIComponent(或者類似的任何真實消耗串)進行解碼。

+0

啊由於某種原因,我認爲'JSON.parse'總是將一個字符串解析爲一個對象/數組文字。我非常錯誤,非常感謝! – saadq

+0

@saadq:你有這樣想的理由。 :-) JSON規範的早期版本確實要求頂層是一個對象或數組。但是很早就發現,允許任何有效的JSON值更有用,這就是JavaScript規範(以及最終的JSON規範)。已經有好幾年了,但是最高層必須是一個物體或者一個陣列的想法已經在人們的思維中建立起來了,你仍然會發現人們在說這個話題...... –