2015-03-31 79 views
11

如何爲流星中的所有模板創建一個函數?如何在流星模板中創建全局函數

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

可能的[流星模板助手的全局函數]的副本(http://stackoverflow.com/questions/20681761/global-function-for-meteor-template-helper) – 2016-01-11 13:02:53

回答

20

你需要讓你的函數的全局標識符能夠跨越叫它多個文件:

index.js

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

流星,變量文件範圍在默認情況下,如果你想標識導出到全局命名空間跨項目重複使用它們,你需要使用這個語法:

myVar = "myValue"; 

在JS,功能是可以存儲在常規變量文字,因此語法如下:

myFunc = function(){...}; 
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(); 
    } 
}); 

也許它不完全是你想要的,因爲在這種情況下,你應該在任何模板中追加導入,但是避免使用全局變量是相當好的做法,並且可能你不想在任何模板中使用相同的函數。