11

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

index.js

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

测试1.js

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

Test2.js

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

3 回答 3

22

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

index.js

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

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

myVar = "myValue";

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

myFunc = function(){...};
于 2015-03-31T09:05:24.657 回答
1

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

导入/函数/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(); 
    }
});

也许这不是您想要的,因为在这种情况下,您应该在任何模板中附加导入,但避免使用全局变量是相当好的做法,并且您可能不想在任何模板中使用相同的函数。

于 2017-06-17T08:57:39.047 回答
0

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

于 2018-09-20T15:48:19.970 回答