0
對於.test1和.test2,結果是相同的(如在鏈接中)。 https://gist.github.com/programmersharp/2d83727f5a59ece5bc633edcbf4a7084Sass認爲單個項目作爲一個道具陣列
我的目標是拿到1 .test1和2 .test2
你知道,如果有一些類似@each,不會在數組中循環訪問屬性,如果只是一個單一的項目。
對於.test1和.test2,結果是相同的(如在鏈接中)。 https://gist.github.com/programmersharp/2d83727f5a59ece5bc633edcbf4a7084Sass認爲單個項目作爲一個道具陣列
我的目標是拿到1 .test1和2 .test2
你知道,如果有一些類似@each,不會在數組中循環訪問屬性,如果只是一個單一的項目。
解決方法是在「單個元素列表」的末尾添加一個,
。
$array1: ("x": 1, "y": 1),;
$array2: ("x": 1, "y": 1), ("x": 2, "y": 2);
這將產生length
的預期結果。
考慮下面的代碼:
$array1: ("x": 1, "y": 1);
$array2: ("x": 1, "y": 1), ("x": 2, "y": 2);
.test1 {
width: length($array1);
}
.test2 {
width: length($array2);
}
的$array1
被定義爲薩斯地圖同時$array2
被定義爲薩斯列表。當您調用length
函數時,它的行爲將與您已經猜到的不同。
length($array1)
將產生2,因爲地圖有兩個鍵值對。length($array2)
將產生2,因爲該列表有兩個值。因此,攻擊薩斯是強制$array1
評估爲列表而不是地圖。你可以用最後的神奇懸掛,
來做到這一點。
如何向數組添加逗號(我無法添加,因爲您在真實應用程序中顯示)?請查看更新後的鏈接 –
@YuryHomenok你不需要重新定義你的變量,但是在自己定義的末尾添加',':'$ array1:(「x」:1,「y」: 1),;' –
我明白你的意思,但是我沒有像例子那樣的靜態聲明。數組來自服務器,我不知道它的長度是多少。所以,我可以添加一個逗號或永不添加逗號。實際上,我似乎能夠確定何時添加逗號 - 我檢查一種變量,如果它是一張地圖,然後添加一個逗號,如果不是地圖,則不要修改變量。 –