有什么方法可以将功能范围扩展到Meteor中的一组不同模板?

时间:2015-06-20 15:55:48

标签: javascript meteor

让我们说我有多个模板:

<template name="orderForm">

  {{> photographyServicesForm}}
  {{> videographyServicesForm}}
  {{> onlineProductsForm}}

</template>

然后是相应模板的JS文件(包括渲染,创建,帮助,事件等)。

photography_services_form.js
videography_services_form.js
online_products_form.js
order_form.js

我希望在onlineProductsFormphotographyServicesForm之间共享我需要的功能,而不是videographyServicesForm

我不想将这些函数全部放入order_form.js文件中,因为它会变得庞大而且难以处理。我显然也不想在每个不同的模板中复制相同的函数定义。

有没有办法做到这一点,或者我是否必须将所有内容都放入order_form.js文件中?

1 个答案:

答案 0 :(得分:1)

创建另一个JS文件,在其中放置一些模板之间的共享函数,并在声明它们时不使用var关键字将它们导出到全局命名空间。

lib/order_form_common.js(使用lib文件夹前缀首先加载此文件)

sharedOnRendered = function(){};

sharedHelpers = {
  helper1: function(){},
  helper2: function(){}
};

sharedEvents = {
  "click p": function(){},
  "submit form": function(){}
};

最后,在相应的模板逻辑JS文件中使用这些共享定义。

photography_services_form.js

Template.photographyServicesForm.onRendered(sharedOnRendered);

Template.photographyServicesForm.helpers(sharedHelpers);

Template.photographyServicesForm.events(sharedEvents);