清除 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 进行路由。
在我的网站中,我有一个带有搜索字段的顶部导航栏。一旦我在搜索字段中输入了 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 进行路由。