Marko JS模板中的条件类

时间:2016-01-10 14:52:43

标签: node.js template-engine marko

我正在使用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文件上创建条件类,该文件根据页面标题在活动非活动之间切换?

由于

2 个答案:

答案 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