Javascript Jade中的嵌套Mixin导致非法令牌错误

Javascript Jade中的嵌套Mixin导致非法令牌错误,javascript,node.js,pug,mixins,Javascript,Node.js,Pug,Mixins,我有一个复杂的翡翠模板,我简化了这个问题。我正在研究动态嵌套mixin,它根据我传递的字符串的值更改输入的属性。我必须使用mixin进行输入,所以不幸的是,没有mixin对我来说不是一个选项。我在带有+input\u mixin(…的行上得到错误意外标记非法 mixin name_of_mixin(type) - if type == 'multiple' - var name = '{{:#index}}' - else if type == 'old'

我有一个复杂的翡翠模板,我简化了这个问题。我正在研究动态嵌套mixin,它根据我传递的字符串的值更改输入的属性。我必须使用mixin进行输入,所以不幸的是,没有mixin对我来说不是一个选项。我在带有
+input\u mixin(…
的行上得到错误
意外标记非法

mixin name_of_mixin(type)
    - if type == 'multiple'
        - var name = '{{:#index}}'
    - else if type == 'old'
        - var name = 'old'
    - else
        - var name = 'normal'
    +input_mixin(#{name})

通过查看jade文档,我的建议是执行以下操作以消除
非法令牌错误,实际上有点夸张

- var name = ""
mixin input_mixin(name, name)
  input(name=name)&attributes(attributes)= name

mixin name_of_mixin(type)
    if type == 'multiple'
        - name = '{{:#index}}'
    else if type == 'old'
        - name = 'old'
    else
        - name = 'normal'
+name_of_mixin('foo')
+input_mixin(- name, name)(placeholder='plaeceholder value')
我提出了以下简化的解决方案,看起来效果不错。我想主要的问题是mixin调用的缩进和条件语句前面的连字符

- var name = ""
mixin input_mixin(name)
  input(name=name)&attributes(attributes)

mixin name_of_mixin(type)
    if type == 'multiple'
        - name = '{{:#index}}'
    else if type == 'old'
        - name = 'old'
    else
        - name = 'normal'
+name_of_mixin('foo')
+input_mixin(name)(placeholder='placeholder value')

我真的不是翡翠模板制作的专家,但是通过查看文档和摆弄你的例子,我想到了这个。这就是你要找的吗?嘿@DavidDomain如果你把这作为一个答案,我会指出它是正确的。你做得有点太多了,但我能够根据你的代码笔来找出它。所以谢谢!(这是你如何简化你所做的事情,)很高兴你找到了答案。我添加了这一点,作为对其他使用jade模板的mixin有类似问题的人的回答。