流星如何将一个模板的帮助程序调用为另一个模板帮助程序?

时间:2018-12-05 13:04:58

标签: 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')();

}); 

1 个答案:

答案 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({});
  }
}); 

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