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

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

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

person Ramesh Murugesan    schedule 31.03.2015    source источник
comment
Возможный дубликат глобальной функции для помощника шаблона Meteor   -  person Cees Timmerman    schedule 11.01.2016


Ответы (3)


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

index.js

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

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

myVar = "myValue";

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

myFunc = function(){...};
person saimeunt    schedule 31.03.2015

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

импорт/функции/somefunction.js

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

и в логике шаблона импортируйте его и используйте таким образом:

клиент/расчеты.js

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

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

Может быть, это не совсем то, что вам нужно, потому что в этом случае вы должны добавить импорт в любом шаблоне, но избегать глобальных переменных — это хорошая практика, и, вероятно, вы не хотите использовать ту же функцию в any< /strong> шаблон.

person Daniel    schedule 17.06.2017

Это не обязательно должно быть в какой-либо конкретной части вашего кода. Если он находится в другом файле, для глобальных функций, например global.js, просто импортируйте его из файла шаблона .js и вызовите его, как обычно.

person Eneas Marín    schedule 20.09.2018