2014-12-19 36 views
1

流星'重新渲染'後如何運行一個函數?流星 - '重新渲染'後運行代碼

我有一個模板,在渲染時,它應該運行一個採用正常選擇框的(fancyform)函數,並對其進行設置。所以我把這個功能放在了Template.tempname.rendered = function(){}。都好。

但是我也有一個i18n功能(使用TAP-i18n),它通過更改會話變量來更改語言,這會使頁面上的文本更改爲我們定義的任何文本。

但是,Template.tempname.rendered中的函數不會再次運行,並且選擇框語言不會更新。我需要再次運行fancyform函數,以便選擇框也使用正確的語言。

我該怎麼做?我已閱讀(並努力理解)依賴關係......是相關的嗎?這是過度殺傷力?任何指針將不勝感激。

+0

也許[這個答案](http://stackoverflow.com/a/27504177/2104665)回答你的問題? – 2014-12-19 08:46:31

回答

2

在你rendered回調,你需要有一個活躍的計算,其本身無效任何時候你i18n反應字典的變化,所以:

Template.tempname.rendered = function() { 
    this.autorun(function() { 
    TAPi18n.getLanguage() // make sure to invalidate if the language changes 
    /* run your fancy form function here */ 
)); 
}; 
+0

非常感謝! – dayuloli 2015-01-06 10:22:04