清除 real-time/reactive 搜索输入后如何转到上次访问的 Meteor 路线?

How to go to last visited Meteor route after clearing real-time/reactive search input?

在我的网站中,我有一个带有搜索字段的顶部导航栏。一旦我在搜索字段中输入了 2 个以上的字符,iron-router 就会带我到我的 'search' 路线并显示结果。当我从我的搜索字段中删除输入时,我仍然在我的搜索路线中(不显示任何结果),但我想更改它以便我将 return 到我访问的最后一页(我开始输入的地方)搜索字段)。

我的 body 包含此路由:

  <div id="page-wrapper" class="gray-bg">
    {{> topNavbar }}
    {{> yield}}
    {{> yield 'bottom'}}
  </div>

在我的 topnavbar.js 中,我使用以下代码访问搜索结果:

Template.topNavbar.events({
    'keyup input': function (e, t) {
        var s = t.find('input').value;
        if (s && s.length >= 2) {
            Session.set('searchtext', s);
            Meteor.subscribe('vod-search', s);
        } else {
            Session.set('searchtext', '');
            Meteor.subscribe('vod-search').stop();
        }
        Router.go('search')
    }
});

我知道我可以使用 Router.current().route.getName() 获取当前路线,但是因为每次我输入字符时搜索输入都会更新路线,所以这不是很有用...

我已经在 topnavbar.js 中尝试使用此代码将路由记录到控制台:

Router.onStop(function () {
    Session.set("previousLocationPath", Router.current().route.getName());
});


Router.onBeforeAction(function () {
    var previousLocationPath = Session.get("previousLocationPath");
    console.log(previousLocationPath);
    this.next();
});

现在我完全陷入了我的思考路径,我可以做些什么来 return 我以前的 non-search 路线。我仍然是 Javascript 的新手,所以我可能会错过一些明显的东西,所以我希望有人能指出我正确的方向...

提前致谢!

我认为你可以只使用纯 JS history.back() 返回到以前的路由,因为 iron-router 使用历史记录 api 进行路由。