1

我正在使用layouttaglib将页面扩展到其模板,但我不知道如何将变量传递给主布局并应用条件类。

考虑到这是我的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之间切换?

谢谢

4

2 回答 2

3

您可以通过向<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>

那应该可以解决您的问题,但是如果您仍然卡住,请告诉我。

于 2016-01-11T18:06:06.447 回答
-2

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

并且在使用 global 之后,您不需要将属性添加到任何标签。您可以使用 like out.global.username 访问它

于 2016-10-18T03:58:47.550 回答