在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函数。
答案 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")
| }