我想创建一个包含 mixin 的所有参数的变量,然后将变量传递给 mixin。这是可能的,如果是这样,为什么这不起作用?
- var foo = "'arg1','arg2','arg3'"
mixin bar(arg1, arg2, arg3)
div
#{arg1}, #{arg2}, #{arg3}
+bar(foo)
我想创建一个包含 mixin 的所有参数的变量,然后将变量传递给 mixin。这是可能的,如果是这样,为什么这不起作用?
- var foo = "'arg1','arg2','arg3'"
mixin bar(arg1, arg2, arg3)
div
#{arg1}, #{arg2}, #{arg3}
+bar(foo)
您尝试的方法不起作用,因为您使用字符串作为单个参数并使用单个字符串调用 bar mixin。您不会在“,”字符处拆分字符串参数,因此只有您的 arg1 包含一个值。
首先让我们修复你的 bar mixin
mixin bar(args)
div
each arg in args
| #{arg}
该代码仅使用一个名为“args”的参数。对于此参数,需要一些可枚举或类似数组的类型。有关迭代的更多信息,请参阅jade 文档。代码块| #{arg}
将 arg 值写入纯文本。
如何调用这个mixin?您需要提供一个参数数组,而不是将参数作为字符串提供:
mixin bar(['arg1','arg2','arg3'])
如果你想传递一个字符串作为参数,你必须重写你的混合栏:
mixin barString(argString)
- args = argString.split(',');
div
each arg in args
| #{arg}
然后你可以调用 barString mixin:
mixin barString("arg1,arg2,arg3")
请注意,我已删除此调用的单引号。
来晚了,你也可以这样
mixin bar(...args)
each arg in args
| #{arg}
+bar('arg1', 'arg2', 'arg3')