0

Ironルーターを使用しています。プロジェクトの一部のルートは、ユーザーがログインしている場合にのみレンダリングする必要があり、一部のルートはユーザーがログインしているかどうかに関係なくレンダリングする必要があります。registerHelperページかどうかを定義しようとしましたrequireLoginが、何らかの理由でルートにログインが必要な場合でも、間違ったセクションがレンダリングされます。

レイアウト テンプレートは次のとおりです。

<template name="layout">

  {{#if requireLogin}}
    <!-- ... render route content or login form ... -->
      {{#if currentUser}}
        {{> yield}}
      {{/if}}
      {{#unless currentUser}}
        {{> loginPage}}
      {{/unless}}
  {{/if}}

  {{#unless requireLogin}}
    <!-- ... render route content ... -->
    {{> yield}}
  {{/unless}}

</template>

情報を含むルート ページの例requireLogin:

<template name="pageUser">
  {{requireLogin true}}
  <!-- ... some user page content ... -->
</template>

<template name="pageTermsOfUse">
  {{requireLogin false}}
  <!-- ... some Terms of use page content ... -->
</template>

そしてクライアントコード:

if (Meteor.isClient) {
  Handlebars.registerHelper("requireLogin", function (requireLogin) {
    console.log(requireLogin)
    return requireLogin;
  });
};

Aはユーザー ページと利用規約ページにconsole.log戻る必要がありますが、代わりに次のようにログに記録します。truefalse

undefined
undefined
true

requireLoginが True に設定されている場合でも、セクション{{#unless requireLogin}}がレンダリングされます。この問題を解決する方法についての提案が役立つ場合があります。

4

1 に答える 1

0

requireLogin値をどこかに保存する必要があります。単純にセッション変数を使用できます。

Template.registerHelper("requireLogin", function (requireLogin) {
  if(requireLogin) Session.set('requireLogin', requireLogin);
  return Session.get('requireLogin');
});

また、私はTemplateand notを使用しHandlebarsます。

于 2015-07-26T15:15:01.603 に答える