Как создать глобальную функцию в шаблоне метеор

Как создать функцию для всех шаблонов в метеоре?

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
  }
});

Ответ 1

Вам нужно сделать свою функцию глобальным идентификатором, чтобы иметь возможность называть ее несколькими файлами:

index.js

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

В Meteor переменные по умолчанию ограничены файлами, если вы хотите экспортировать идентификаторы в глобальное пространство имен, чтобы повторно использовать их в своем проекте, вам нужно использовать этот синтаксис:

myVar = "myValue";

В JS функции - это литералы, которые могут храниться в регулярных переменных, поэтому следующий синтаксис:

myFunc = function(){...};

Ответ 2

Если вы не хотите засорять глобальное пространство имен, вы можете создать отдельный файл:

Импорт/функция/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(); 
    }
});

Возможно, это не совсем то, чего вы хотите, потому что в этом случае вы должны добавить импорт в любой шаблон, но избегать глобальных переменных является довольно хорошей практикой и, вероятно, вы не хотите использовать ту же функцию в любой.