2013-03-03 101 views
4

我想創建一個變量,其中包含一個mixin的所有參數,然後將該變量傳遞給mixin。這是可能的,如果是這樣,爲什麼這不工作?我可以通過多個參數給一個Jade mixin一個變量嗎?

- var foo = "'arg1','arg2','arg3'" 

mixin bar(arg1, arg2, arg3) 
    div 
    #{arg1}, #{arg2}, #{arg3} 

+bar(foo) 
+0

爲什麼有'+'在前面'欄(富)'的?另外,'foo'是一個字符串,因此是一個變量。 'bar'期待3個變量。這就是爲什麼它不起作用! – Amberlamps 2013-03-03 21:42:35

+0

它看起來像你需要在前面加號。從文檔http://jade-lang.com/reference/mixins/中的示例 – jackdbernier 2014-12-08 03:27:16

回答

6

什麼你想,因爲你使用一個字符串作爲單獨的參數並不起作用與一個字符串調用你的酒吧混入。您不要在','字符處拆分字符串參數,所以只有您的arg1包含一個值。

首先讓我們來修復您的酒吧MIXIN

mixin bar(args) 
    div 
    each arg in args 
     | #{arg} 

的代碼只使用名爲 'ARGS' 一個說法。對於這個參數,一些枚舉類型或數組類型是預期的。見jade documentation for more information about iterations。代碼塊| #{arg}將arg值寫爲純文本。

如何調用這個mixin?相反,提供參數作爲字符串,您需要提供一個參數數組:

mixin bar(['arg1','arg2','arg3']) 

如果你想傳遞一個字符串作爲參數,你就必須重寫你的mixin吧:

mixin barString(argString) 
    - args = argString.split(','); 

    div 
    each arg in args 
     | #{arg} 

然後,你可以調用barString混入:

mixin barString("arg1,arg2,arg3") 

請注意,我已經刪除了單引號這個呼叫。

0

這是晚了,你也可以做這樣的

mixin bar(...args) 
    each arg in args 
     | #{arg} 

+bar('arg1', 'arg2', 'arg3') 
相關問題