Meteor如何将一个模板的助手调用为另一个模板助手



我有一个搜索模板,其中搜索工作正常。现在我需要在我的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({});
}
}); 

请注意,您还可以使用共享上下文共享ReactiveVarReactiveDict实例,其作用有点像Session,但范围有限。

最新更新