脚本中的条件。在玉

时间:2016-01-16 16:16:08

标签: node.js pug

在Jade中,是否可以在dynamiccript部分创建条件if语句?

例如:

doctype html
html
 head
  script.
   -if( locals.display_JS )
    console.log("Display_JS is TRUE")
   -else
    console.log("Display_JS is FALSE")

(locals.display_JS是res.render中传递给Jade的参数。)

如果display_JS为true,则所需的输出应如下所示:

<script ...>console.log("Display_JS is TRUE")</script>

然而输出是:

<script>
 -if( locals.display_JS )
  console.log("Display_JS is TRUE")
 -else
  console.log("Display_JS is FALSE")
</script>

可能是我在想错。我的目标是根据发送到res.render的参数呈现不同的javascript函数。

3 个答案:

答案 0 :(得分:2)

可以使用另一种方法来完成。每当您想嵌套JavaScript代码时。

doctype html
html
 head
  script
    if( locals.display_JS )
      .
         /** Some JS code **/
         console.log("Display_JS is TRUE")
    else
      .
         console.log("Display_JS is FALSE")

答案 1 :(得分:0)

Jade不会破坏脚本块中的任何内容。如果你真的需要在脚本块中使用jade逻辑,你可能会有点棘手,并做这样的事情:

路由器代码:

router.get('/', function(req, res){
    res.render('index', {run_this:true});
}); 

Jade Code:

div
| <script type='text/javascript'>
if(run_this)
    | console.log("Ran this!");
else
    | console.log("Didn't run this");
| </script>

在脚本标记中基于jade变量运行逻辑的另一种方法是执行以下操作:

script.
    if(!{run_this}){
        console.log("Ran This!");
    }

答案 2 :(得分:0)

当您使用script.时,后面的所有内容都会被玉解释为纯文本。如果需要将标记和纯文本混合使用,则可以使用|。例如:

script
    | function bar(){
    if(true)
      | console.log("Ran this")
    else
      | console.log("Don't run this")
    | }