Marko JS模板中的条件类

我正在使用layout taglib 扩展页面到其模板,但我不知道如何将一个variables传递到主布局和应用条件类。

考虑到这是我的main-layout.marko

 <!DOCTYPE html> <html lang="en"> <head> </head> <body class="#### (TITLE === 'REGISTER')?'ACTIVE':'INACTIVE' ####"> <layout-placeholder name="title"/> <layout-placeholder name="body"/> </body> </html> 

这是我的registration.marko

 <layout-use template="./layout.marko"> <layout-put into="title"> $data.title </layout-put> <layout-put into="body"> some content </layout-put> </layout-use> 

最后这是我用来渲染页面和传递标题数据的代码

 router.get('/register', function(req, res, next) { registration.render({ title: 'register' }, res); }); 

如何在main-layout.marko文件上创build一个条件类,根据页面标题在活动或非活动之间切换?

谢谢

您可以通过向<layout-use>标签添加其他属性来将数据传递给布局。 请参阅: marko-layout»布局数据

对于你的例子,以下将工作:

main-layout.marko

 <!DOCTYPE html> <html lang="en"> <head> </head> <body class="#### ${data.title === 'REGISTER' ? 'ACTIVE' : 'INACTIVE' } ####"> <layout-placeholder name="title"> ${data.title} </layout-placeholder> <layout-placeholder name="body"/> </body> </html> 

registration.marko

 <layout-use template="./layout.marko" title="${data.title}"> <layout-put into="body"> some content </layout-put> </layout-use> 

这应该解决你的问题,但让我知道你是否仍然卡住。

还有另一种传递数据的方法:使用$ global传递数据的所有模板。

并使用全球后,你不需要添加任何标签的属性。 你可以像out.global.username一样使用它