我有一个搜索模板,可以很好地进行搜索。现在,我需要在navbar.js文件中调用相同的搜索事件。是否可以在我的导航栏模板帮助器中调用其他模板的帮助器。
templates \ pages \ search \ search.js帮助程序
Template.Search.events({
"keyup #searchFormInput": _.throttle((e, tmpl) => {
let text = $(e.target).val().trim();
console.log(text);
if (text.length)
ArgSearch.search(text);
}, 200)
});
Template.Search.helpers({
'getResults' () {
return ArgSearch.getData({});
}
});
templates \ shared \ nav \ navbar.js
试图像
那样称呼它Template.Topnavright.events({
Template.Topnavright.__helpers.get('Search')();
});
答案 0 :(得分:1)
一个可能的解决方案是创建一个共享的上下文,这两个模板都将对其进行更新和使用:
imports / somewhere / context.js
export const Shared = {
ArgSearch: ArgSearch,
}
templates \ pages \ search \ search.js
import {Shared} from 'imports/somewhere/context.js'
Template.Search.events({
"keyup #searchFormInput": _.throttle((e, tmpl) => {
let text = $(e.target).val().trim();
console.log(text);
if (text.length)
Shared.ArgSearch.search(text);
}, 200)
});
Template.Search.helpers({
'getResults' () {
return Shared.ArgSearch.getData({});
}
});
templates \ shared \ nav \ navbar.js
import {Shared} from 'imports/somewhere/context.js'
Template.Topnavright.events({
someHelpers () {
return Shared.ArgSearch.getData({});
}
});
请注意,您还可以与共享上下文共享ReactiveVar
或ReactiveDict
实例,其行为有点像Session
,但范围有限。