如果Blaze中的/ Else逻辑导致在Meteor中的页面之间导航时导致经过身份验证的用户页面闪烁

时间:2015-10-07 15:09:03

标签: meteor meteor-blaze meteor-accounts

我有这个主要布局

<!-- Wrapper-->
<div id="wrapper">
    {{#if currentUser }}

     <!-- Page wrapper -->
     {{> topNavbar }}

    <!-- Navigation -->
      {{> navigation }}

      <!-- Page wraper -->
      <div id="page-wrapper" class="gray-bg">

          <!-- Main view  -->
          {{> yield}}
      </div>
      <!-- End page wrapper-->
      <!--{{> rightSidebar }}-->

    {{else}}
      {{> loginPage }}

    {{/if}}
</div>
<!-- End wrapper-->

如果用户未登录,则显示登录页面的明显目的。意想不到的效果是当用户在某些页面/路线之间导航时,它偶尔会显示登录页面半秒或两秒。

我确信有一种方法可以通过订阅来实现这一点,但是还没有得到他们在Meteor中......但是想知道是否有一个忍者会看到这个和scoff可以通过快速提示

谢谢!

我见过How to get rid of Meteor template flickers,但我希望有一种方法可以在没有路由的情况下解决这个问题 - 我可以将代码添加到主模板javascript文件中吗?

1 个答案:

答案 0 :(得分:1)

问题是,没有两种状态登录而不是。客户端也在登录状态之间。为了解决这个问题,我们可以使用{{loggingIn}}帮助程序:

<!-- Wrapper-->
<div id="wrapper">
    {{#if currentUser }}

     <!-- Page wrapper -->
     {{> topNavbar }}

    <!-- Navigation -->
      {{> navigation }}

      <!-- Page wraper -->
      <div id="page-wrapper" class="gray-bg">

          <!-- Main view  -->
          {{> yield}}
      </div>
      <!-- End page wrapper-->
      <!--{{> rightSidebar }}-->

    {{else}}

      {{#if loggingIn}}

        loading...

      {{else}}

        {{> loginPage }}

      {{/if}}

    {{/if}}
</div>
<!-- End wrapper-->

另外,在不相关的说明中,您可以使用

{{!-- Spacebars comments do not get into the DOM --}}

而不是

<!-- This still gets into the DOM, but not rendered by the browser -->