JADE中完成if-else条件块

3
我想在Jade中完成一个if else条件块,以便可以添加嵌套代码。
- var name = 'you';
- if(name != '')
    p Hello #{name}
- else
    p Hello world
| !!!

我想要获取一个空名称变量

<p>Hello you!!!</p>

但是我得到

<p>Hello world</p>
!!!

使用 name = you,我想要获取

<p>Hello world!!!</p>

我要在

元素里添加更多的文本/标签,包括if/else语句和通用情况下的嵌套。关键是不重复使用代码中的!!!

想要类似try/catch中的finally块就好了,但是它不存在。


只需使用:p 你好,世界!!! - dafyk
2个回答

5

花括号可以在内联代码中使用

- var name = 'you';
- if(name != '') {
    p Hello #{name}
- } else {
    p Hello world
- }
| !!!


你怎么在两个p标签中插入一个标签?比如说strong标签!!!用你的解决方案,感叹号成为了p元素的兄弟而不是子元素,不管我是否将strong标记缩进。

只需将 p 标签移到 if-else 块外,并在那里使用 | 即可。

div
    - var name = 'you';
    p
        - if(name != '') {
            | Hello #{name}
        - } else {
            | Hello world
        - }
            strong !!!

您IP地址为143.198.54.68,由于运营成本限制,当前对于免费用户的使用频率限制为每个IP每72小时10次对话,如需解除限制,请点击左下角设置图标按钮(手机用户先点击左上角菜单按钮)。 - Mikel
1
只需将 p 标签移到 if-else 块之外,然后在那里使用 |。检查编辑。 - laggingreflex

1
您可以将!!!部分添加到原始文本内容中:
if(name != '')
   p Hello #{name}
else
   p Hello world!!!

| !!!else块之外,并向父标签添加了一个文本节点。

如果要将标签添加到p标签中,可以嵌套它:

if(name != '')
   p Hello #{name}
else
   p 
      b Hello world
      | !!! 

编辑:为了避免重复,您还可以编写以下代码:
- name = name || 'world';
p 
  | Hello #{name}
  | !!!
  b ...

或者:

p 
  = "Hello " + ( name || "world" )
  | !!!

当然我可以添加文本。!!!仅是一个例子,我想为两种情况(if和else)添加更多常见的代码(大量标签),而不只是针对一种情况。重点是找到一种方法,避免重复代码。 - Mikel
1
@Mikel 我更新了回答并附上一个遵循DRY原则的示例片段。 - Ram

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接