【问题标题】:Refreshing page in Meteor with iron:router always clears route使用铁刷新 Meteor 中的页面:路由器总是清除路由
【发布时间】:2016-01-27 20:51:59
【问题描述】:

我有一个使用 Iron:router 包开发的 Meteor 应用程序。我知道我的用户会倾向于重新加载页面,因为每个人都喜欢偶尔这样做。

我的问题是每次重新加载页面时,它都会回到我的 Meteor 应用程序的主页。

有没有办法让应用程序在页面重新加载时保持在原来的路线上?

这是我的路线代码:

Router.configure({
  layoutTemplate: 'layout', // Defines the layout template
  loadingTemplate: 'loading' // Defines the loading template
});

// Add the dataNotFound plugin, which is responsible for
// rendering the dataNotFound template if your RouteController
// data function returns a false value
Router.plugin('dataNotFound', {
  notFoundTemplate: 'dataNotFound'
});

Router.route('/', {
  name: 'home',
  template: 'home'
});

Router.route('/signup');
Router.route('/login');
Router.route('/recoverpassword');
Router.route('/resetpassword');

以下是与布局相关的所有内容:

<template name="layout">
  {{> navigation}}
  {{> yield}}
  {{> footer}}
</template>

<head>
  <title>Ecclesia.Life</title>
  <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
</head>

<body>
  <!-- Dropdown menu script -->
  <script src="//netdna.bootstrapcdn.com/bootstrap/3.0.0/js/bootstrap.min.js"></script>
</body>   

<template name="navigation">
<nav class="navbar navbar-default">
    <div class="container-fluid">
        <div class="navbar-header">
            <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar-collapse" aria-expanded="false">
                <span class="sr-only">Toggle navigation</span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
            </button>
            <a class="navbar-brand" href="{{pathFor route='home'}}">Ecclesia.Life</a>
        </div>

        <div class="navbar-collapse collapse" id="navbar-collapse" aria-expanded="false" style="height: 1px;">
            <ul class="nav navbar-nav">
                <li><a href="{{pathFor route='home'}}"><span class="glyphicon glyphicon-home"></span>&nbsp;&nbsp;&nbsp;&nbsp;Home</a></li>
                <li><a id="qrScanner" href="#" onclick="inDevelopment();"><span class="glyphicon glyphicon-qrcode"></span>&nbsp;&nbsp;&nbsp;&nbsp;QR Scanner</a></li>
                <script>
                    $('#qrScanner').click(function() {
                        alert("Still in in development");
                    });
                </script>
            </ul>
            <ul class="nav navbar-nav navbar-right">
                {{#if currentUser}}
                    {{#if isInRole 'admin'}}
                        <li class="dropdown">
                            <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false"><span class="glyphicon glyphicon-cog"></span>&nbsp;&nbsp;&nbsp;&nbsp;Maintenance <span class="caret"></span></a>
                            <ul class="dropdown-menu">
                                <li>
                                    <a href="/manageusers"><span class="glyphicon glyphicon-user"></span>&nbsp;&nbsp;&nbsp;&nbsp;Manage Users</a>
                                </li>
                                <li><a href="/addqrpage"><span class="glyphicon glyphicon-plus"></span>&nbsp;&nbsp;&nbsp;&nbsp;Add QR Page</a></li>
                            </ul>
                        </li>
                    {{/if}}
                    <li><a href="/@{{currentUser.username}}"><span class="glyphicon glyphicon-user"></span>&nbsp;&nbsp;&nbsp;&nbsp;{{currentUser.profile.firstName}}&nbsp;{{currentUser.profile.lastName}}</a></li>
                    <li><a id="logout" href="{{pathFor route='login'}}"><span class="glyphicon glyphicon-log-out"></span>&nbsp;&nbsp;&nbsp;&nbsp;Log out</a></li>
                {{else}}
                    <li><a href="{{pathFor route='login'}}"><span class="glyphicon glyphicon-log-in"></span>&nbsp;&nbsp;&nbsp;&nbsp;Log in</a></li>
                    <li><a href="{{pathFor route='signup'}}"><span class="glyphicon glyphicon-pencil"></span>&nbsp;&nbsp;&nbsp;&nbsp;Sign up</a></li>
                {{/if}}
            </ul>
        </div>
    </div>
</nav>

<template name="footer">
    <footer class="footer footer-default">
        <div class="container-fluid">
            <hr />
            <p class="text-muted">Copyright &copy; Ecclesia.Life, 2015.</p>
        </div>
    </footer>
</template>

【问题讨论】:

  • 这听起来很不寻常。你能分享一些代码吗?
  • 我刚刚包含了我的路线代码
  • 当你重新加载时,你在哪个 url 上把它带回家?
  • 全部:/signup、/login 等
  • 我正在通过电话发表评论,所以我无法尝试。如果到时候不能解决,明天再做。它不应该发生

标签: javascript meteor reload iron-router page-refresh


【解决方案1】:

好的,我已经进行了小测试 repo 并且一切正常。试试看,也许你会发现你的代码有什么不同。如果它仍然不起作用,请发布更多代码(至少模板定义)以及您的文件在哪些文件夹中。还有你安装了什么包。

【讨论】:

  • 感谢您努力做到这一点,但我认为我所做的任何事情都没有问题。这是我的软件包列表:accounts-password iron:router sacha:spin steeve:jquery-qrcode hitchcott:qr-scanner twbs:bootstrap bootswatch:cosmo alanning:roles reactive-var
  • 我的所有模板都在 /client/templates 中,而我的头部和身体 html 就在 /client 中。我的路线在 /lib
  • 但是如果你在你的电脑上运行我的 repo,那么在不中断路由的情况下刷新就可以了?
  • 好吧,我想我必须搜索我自己的代码来找出是什么导致它在刷新时直接进入主页(这个应用程序已经变得相当大了)。感谢您的回答,不知道它会自动保持在正确的刷新路径上。
  • 路由应该存储在我项目的 lib 文件夹中吧?
猜你喜欢
  • 1970-01-01
  • 2016-07-27
  • 1970-01-01
  • 2016-05-10
  • 1970-01-01
  • 2017-10-06
  • 1970-01-01
  • 2022-01-05
  • 2016-03-19
相关资源
最近更新 更多