2013-07-11 70 views
0

我想一個.less文件加載到我的主旋律,這是我的filestructure:導入用更少的文件將無法看到@filename VAR

main.less 
themes/pink.less 
themes/yellow.less 
themes/blue.less 

我使用這個mixin檢索所選主題:

.theme(@filename){ 
    @import 'themes/@{filename}.less'; 
} 

.theme('pink'); 

它不工作,我得到這個錯誤:

SyntaxError: variable @filename is undefined 
.theme('pink'); 

我用於對背景圖像執行相同操作,而不會出現錯誤,哪裏出錯?

+0

不幸的是這似乎是一個[錯誤](https://github.com/less/less.js/issues/410) – vitto

+0

在您的評論的鏈接是「老「因爲如果你正在運行1.4版本,它應該可以工作,假設你沒有在外部定義變量(即導入要在'@ import'中使用的變量),因爲[顯然尚未支持](https:/ /github.com/less/less.js/issues/1359)(所有導入都不需要等待其他導入裝入)。 – ScottS

回答

1

不幸的是Less.js拋出你與進口.less文件(它正常工作與進口.css文件)描述的錯誤,如果你在混入參數/屬性定義變量,但它的作品,如果你定義變量直接在(localy)裏面或在mixin(globaly)之外。例如,這應該工作:

@filename: 'pink'; 

.theme(){ 
    @import 'themes/@{filename}.less'; 
} 

.theme(); 

Here is a link to a discussion where the plan of implementing this has been discussed a while ago,並且似乎長期目標是讓你的版本的工作,以及,它只是還沒有發生徹底^ _^

但是,如果你只是想根據變量加載一個主題,你可以在沒有mixin的情況下進行。只是在做這樣的事情:

@theme: 'pink'; 
@import 'themes/@{theme}.less'; 
+0

感謝您的信息,我試圖避免這種方式,但現在它會沒事的! – vitto