2016-01-21 41 views
1

下面的例子:如何調用Meteor.js中if語句中的元素的函數?

{{#if currentUser}} 
    <li><a class="waves-effect waves-light btn modal-trigger modal-close" href="#upload">Upload Image</a></li> 
{{/if}} 

現在我這樣做:

Template.MasterLayout.onRendered(function() 
{ 
    $('.modal-trigger').leanModal(); 
}); 

此當你登錄,然後刷新頁面的工作。當然,我希望在顯示按鈕時運行該功能。我想知道,我將如何處理「在上傳圖像呈現的那一刻,運行此功能」。因爲我只知道如何使用模板做到這一點,而不是單獨的元素。我也可以說:「在當下的用戶登錄,運行該功能」,但我覺得你應該能夠有一些像「elem.onRendered」?

回答

3

有幾種解決方案,但最簡單的就是把它放在一個子模板:

... 
    {{#if currentUser}} 
    {{> subTemplate}} 
    {{/if}} 
    ... 
</template> 

<template name="subTemplate"> 
    <li><a class="waves-effect waves-light btn modal-trigger modal-close" href="#upload">Upload Image</a></li> 
</template> 

然後:

Template.subTemplate.onRendered(function() { 
    $('.modal-trigger').leanModal(); 
}); 
+0

這是最好的,或只是最簡單的方法是什麼?謝謝 –

+0

在這種情況下,我會說最好的。唯一需要注意的是if if塊的* content *在某種程度上取決於* conditional * - 也就是說如果你正在渲染一些在currentUser變化時將會改變的東西。在這種情況下,你需要在'onRendered'回調函數中使用'autorun'塊,並且你可以在父模板中做到這一點。 – richsilv

+0

Alrighty,像魅力一樣工作,謝謝! –