2016-02-11 92 views
1

Template.myTemplate.rendered函數(或從其他模板函數),我想調用其他的util函數。不知道如何以流星的方式做到這一點。呼叫助手函數從其他模板相關函數

我試圖

Template.myTemplate.rendered = function(){ 
    console.log("chat Interface rendered"); 
    Template.myTemplate.__helpers.get('someFunction'); 
}; 


Template.myTemplate.helpers({ 
    'isEditable': function() { 
    return Session.get('editable'); 
    }, 
    'someFunction':function() { 
    console.log("someFunctionis called"); 
    //More stuff here 

    } 
}); 

如預期這沒有奏效。有沒有任何標準的做法?

+0

您可以創建一個全局函數,並調用它在不同的模板 – durrrr

+0

你能提供這個問題的一些方面?我認爲你可以使用會話變量來切換按鈕的禁用狀態,而不是你想要做的事情。 – umesh

+0

我們如何知道你是否不提供你的'其他util功能' – asingh

回答

2

在我看來,你是濫用template helpers。通常,它們用於將數據獲取到模板中,而不用於控制UI元素。

因此,我建議建立一個常規的JavaScript函數,然後調用它的onRendered回調中:

function disableChatBtn() { 
    console.log("disableChatBtn is called"); 
    $('#btn-chat').prop('disabled', true); 
} 

請注意:Template.myTemplate.rendered流星版本已經過時1.0.4.2(或更高版本) ,改爲使用Template.myTemplate.onRendered

例如:

Template.myTemplate.onRendered(function() { 
    console.log("chat Interface rendered"); 
    disableChatBtn(); 
}); 
+0

如果你想切換按鈕狀態,那麼在模板助手和事件中使用Session變量是有意義的。我絕對不會排除這個選擇。 – durrrr

+0

@durrr:看到這是非常簡單的例子,其中切換按鈕,WH如果有其他的東西要做? ,M問這個概念,方式...... – monda

+0

@monda這個評論是關於控制UI元素的。對於你的問題,我已經建議創建一個全局函數 – durrrr

0

您可以創建一個流星方法並在代碼中任何地方使用它。您也可以從其他方法調用方法。

Meteor.methods({ 
    someMethod: function (param) { 
    //do stuff 
    } 
}); 

var result = Meteor.call('someMethod', param);