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

Kyl*_*ina 4 javascript variables pug

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

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

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

+bar(foo)
Run Code Online (Sandbox Code Playgroud)

sai*_*ama 6

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

首先让我们修复你的酒吧mixin

mixin bar(args)
  div
    each arg in args
      | #{arg}
Run Code Online (Sandbox Code Playgroud)

代码只使用一个名为'args'的参数.对于此参数,需要一些可枚举或类似数组的类型.有关迭代的更多信息,请参阅jade文档.代码块| #{arg}将arg值写为纯文本.

如何调用这个mixin?您不需要提供参数作为字符串,而是需要提供参数数组:

mixin bar(['arg1','arg2','arg3'])
Run Code Online (Sandbox Code Playgroud)

如果你想传递一个字符串作为参数,你必须重写你的mixin栏:

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

  div
    each arg in args
      | #{arg}
Run Code Online (Sandbox Code Playgroud)

然后你可以调用barString mixin:

mixin barString("arg1,arg2,arg3")
Run Code Online (Sandbox Code Playgroud)

请注意,我已删除此调用的单引号.