我想创建一个包含mixin的所有参数的变量,然后将变量传递给mixin。这是可能的,如果是这样,为什么这不起作用?
- var foo = "'arg1','arg2','arg3'"
mixin bar(arg1, arg2, arg3)
div
#{arg1}, #{arg2}, #{arg3}
+bar(foo)
答案 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')