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 を使用しているすべてのテンプレートにデータを渡す別の方法があります。

グローバルを使用した後は、どのタグにも属性を追加する必要はありません。out.global.username のように使用してアクセスできます

于 2016-10-18T03:58:47.550 に答える