如何在流星模板中创建全局函数

时间:2015-03-31 09:00:33

标签: meteor meteor-blaze meteor-helper

如何为meteor中的所有模板创建一个函数?

index.js

// Some function
function somefunction(){
  return true;
}

Test1.js

Template.Test1.events({
  'click button' : function (event, template){
    //call somefunction
  }
});

Test2.js

Template.Test2.events({
  'click button' : function (event, template){
    //call some function
  }
});

3 个答案:

答案 0 :(得分:21)

您需要使您的函数成为全局标识符,以便能够跨多个文件调用它:

index.js

// Some function
somefunction = function(){
  return true;
};

在Meteor中,默认情况下变量是文件范围的,如果要将标识符导出到全局命名空间以在项目中重复使用它们,则需要使用以下语法:

myVar = "myValue";

在JS中,函数是可以存储在常规变量中的文字,因此具有以下语法:

myFunc = function(){...};

答案 1 :(得分:0)

如果您不想丢弃全局名称空间,可以创建单独的文件:

  

进口/功能/ somefunction.js

export function somefunction(a,b) {
    return a+b;
}

并在模板的逻辑中导入并以这种方式使用:

  

的客户机/ calculations.js

import { somefunction } from '../imports/functions/somefunction.js'

Template.calculations.events({
    'click button' : function (event, template){
        somefunction(); 
    }
});

也许这不是你想要的,因为在这种情况下你应该在任何模板中追加导入,但避免使用全局变量是相当不错的做法,可能你不想在任何模板。

答案 2 :(得分:0)

它不需要在代码的任何特定部分。如果它在另一个文件中,则对于全局函数,即global.js,只需从模板.js文件中导入它,然后照常调用即可。