【问题标题】:Nested Mixin in Jade causes Illegal Token ErrorJade 中的嵌套 Mixin 导致 Illegal Token 错误
【发布时间】:2015-10-26 22:14:51
【问题描述】:

我有一个复杂的 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})

【问题讨论】:

  • 我真的不是玉模板方面的专家,但是通过查看文档并摆弄你的示例,我想出了这个codepen。这是你要找的吗?
  • 嘿@DavidDomain,如果您将此作为答案,我会将其标记为正确的。你做的太多了,但我能够根据你的 codepen 弄清楚。那谢谢啦! (这里是如何简化你所做的事情,codepen.io/jaruesink/pen/eprVwM)
  • 很高兴你知道了。我已将此添加为其他人在使用玉模板的 mixin 方面遇到类似问题的答案。

标签: javascript node.js pug mixins


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多