2017-06-14 33 views
0

我基於這樣我suppling我的組件一系列創建一個V型的列表:鑄字V-關鍵的Vue

<div class="checkbox" v-for="(value, key) in range"> 

我suppling我的數據,像這樣的道具:

"{ 0: '0 stars', 1: '1 star', 2: '2 stars' }" 

雖然當我登錄typeof時,我的v-for鍵將始終設置爲字符串。這很奇怪,因爲我傳遞的是一個將鍵保存爲數字而不是字符串的對象。

當我將密鑰傳遞給方法時,我不想不斷地對它進行轉換。有沒有一種方法可以輕鬆地進行類型轉換?

此外,什麼可能導致這出來作爲一個字符串,而不是一個int?

每當我console.log我的range對象的鍵出現在紫色,所以我猜在那一點上,他們仍然被視爲整數?

回答

1

在JavaScript對象中,總是字符串。它提供了一個不是字符串的鍵,然後通過javascript自動轉換爲字符串。據我所知它是由設計選擇。見Object.keys()

您可以通過索引你的第三個實辨這樣的:

<div class="checkbox" v-for="(value, key, index) in range"> 

又通指數的方法,但作爲vuejs警告(here)

When iterating over an object, the order is based on the key enumeration order of Object.keys(), which is not guaranteed to be consistent across JavaScript engine implementations.

它更好地鑄造像這樣myMethod(Number(key))

+0

我已經在做類型轉換l下面是你的例子。這感覺有點麻煩,但我想我會堅持下去。感謝您的回答。 –

+2

@ Stephan-v因爲在對象中,不能保證數組的順序,因此不能依賴索引 –