我可以给一个带有多个参数的Jade mixin变量吗?

时间:2013-03-03 21:36:47

标签: javascript variables pug

我想创建一个包含mixin的所有参数的变量,然后将变量传递给mixin。这是可能的,如果是这样,为什么这不起作用?

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

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

+bar(foo)

2 个答案:

答案 0 :(得分:6)

你正在尝试的东西不起作用,因为你使用一个字符串作为单个参数并用一个字符串调用你的bar mixin。您不会在','字符处拆分字符串参数,因此只有您的arg1包含值。

首先让我们修复你的bar 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:

mixin barString("arg1,arg2,arg3")

请注意,我已删除此次通话的单引号。

答案 1 :(得分:0)

这已经很晚了,你也可以这样做

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

+bar('arg1', 'arg2', 'arg3')