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

Nested Mixin in Jade causes Illegal Token Error

本文关键字:非法 令牌 错误 Mixin Jade 嵌套      更新时间:2023-09-26

我有一个复杂的Jade模板,我简化了这个问题。我正在寻找动态嵌套的mixin,根据我传递的字符串的值改变输入的属性。我必须使用mixin作为输入,所以不幸的是,没有这个对我来说不是一个选择。我在+input_mixin(...的行上得到错误Unexpected token ILLEGAL

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

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

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