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

问题描述:

我有一个复杂的Jade模板,我为此问题进行了简化。我正在寻找动态嵌套mixin,它根据我通过的字符串的值来更改输入的属性。我必须使用mixin进行输入,所以不幸的是,这对我来说不是一种选择。我得到了与+input_mixin(...一致的错误Unexpected token ILLEGALJade中的嵌套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}) 
+1

我真的不是专家,当谈到玉模板,但通过看文件,并与您如约摆弄我想出了这个[** codepen **](HTTP:// codepen。 IO /匿名/笔/ xwWBEo)。这是你在找什么? – DavidDomain

+0

嗨@DavidDomain如果你把这个作为答案,我会标记它是正确的。你做得太多了,但是我可以根据你的codepen找到它。那谢谢啦! (这里是你如何简化你的工作,http://codepen.io/jaruesink/pen/eprVwM) – jaruesink

+0

很高兴你知道了。我已经添加了这个作为其他人使用jade模板混合使用类似问题的答案。 – DavidDomain

通过看玉的文档我的建议是做到以下几点摆脱
非法令牌错误,这实际上有点夸张了的。

- 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') 

jaruesink想出了以下简化的解决方案,似乎工作得很好。我猜主要问题是混合调用和条件语句前面的连字符的缩进。

- 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')