2013-03-03 111 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') 
相关问题