2015-03-31 21 views
11

Jak utworzyć funkcję dla wszystkich szablonów w meteodzie?jak utworzyć funkcję globalną w szablonie meteorowym

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

Prawdopodobny duplikat [funkcji globalnej dla pomocnika szablonów Meteor] (http://stackoverflow.com/questions/20681761/global-function-for-meteor-template-helper) –

Odpowiedz

20

Trzeba dokonać funkcja globalny identyfikator, aby móc wywołać ją w poprzek wiele plików:

index.js

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

W Meteor, zmienne są scoped plików domyślnie, jeśli chcesz wyeksportować identyfikatory do globalnej przestrzeni nazw do ponownego wykorzystania ich przez Państwa projektu, należy użyć następującej składni:

myVar = "myValue"; 

w JS, funkcje są literały, które mogą być przechowywane w zmiennych stałych, stąd następująca składnia:

myFunc = function(){...}; 
0

Jeśli nie chcesz miotu globalnej nazwy przestrzeni można stworzyć osobny fi le:

import/funkcje/somefunction.js

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

i logiki szablonu importu i używać go w ten sposób:

klient/calculations.js

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

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

Może nie jest to dokładnie to, czego chcesz, ponieważ w tym przypadku powinieneś dołączyć import do dowolnego szablonu, ale unikanie zmiennych globalnych jest raczej dobrą praktyką i prawdopodobnie nie chcesz używać tej samej funkcji w szablonie jakakolwiek .

Powiązane problemy