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一样使用它