我正在使用layout
taglib 将页面扩展到其模板,但我不知道如何将变量传递给主布局并应用条件类。
考虑到这是我的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
文件上创建条件类,该文件根据页面标题在活动或非活动之间切换?
由于
答案 0 :(得分:3)
您可以通过向<layout-use>
标记添加其他属性来将数据传递到布局。请参阅:marko-layout » Layout Data
对于您的示例,以下内容将起作用:
在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>
这应该可以解决您的问题,但如果您仍然被卡住,请告诉我。
答案 1 :(得分:-2)
还有另一种传递数据的方法,即使用$ global传递数据的所有模板。
使用全局后,您不需要为任何标记添加属性。你可以使用like来访问它 out.global.username