我有一个搜索模板,其中搜索工作正常。现在我需要在我的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')();
});
一个可能的解决方案是创建一个共享上下文,由两个模板更新和使用:
imports/something/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\nawbar.js
import {Shared} from 'imports/somewhere/context.js'
Template.Topnavright.events({
someHelpers () {
return Shared.ArgSearch.getData({});
}
});
请注意,您还可以使用共享上下文共享ReactiveVar
或ReactiveDict
实例,其作用有点像Session
,但范围有限。