2015-04-27 32 views
5

截至最近流星狀態的所有文檔中,當模板完成渲染時,onRendered是一種獲取回調的新方法。而rendered只是爲了向後兼容。Meteor.js onRendered&渲染

但是,這似乎並不適合我。 onRendered從來沒有得到執行,而rendered呢。我有最新版本的流星1.1.0.2

//only this is executed 
Template.hello.rendered = function(){ 
    console.log('rendered'); 
} 

//and this is not 
Template.hello.onRendered = function(){ 
    console.log('onRendered'); 
} 
//even if I comment first one out 

,並在行動中這兩種功能,您可以在此github上repo看到。 我做錯了什麼,或者這是onRendered中的缺陷?

和第二個問題 - 爲什麼我開始深入研究這個問題 - 每當一個dom元素被添加/刪除到我的模板時,如何執行代碼? rendered在發生這種情況時似乎不會被調用。有沒有其他方法?

回答

11

onRendered作爲參數發揮作用。試試這個:

Template.hello.onRendered(function() { 
    console.log('onRendered'); 
}); 

隨着這種變化,你會發現兩者renderedonRendered將被調用。另請注意,您現在可以爲給定的模板添加多個onRendered回調。

+0

會立即嘗試。第二個問題? –

+1

@MartinsUntals您可以使用一個嵌套模板,其中包含已刪除的dom,並在其上添加onRendered回調。或者你可以使用ui鉤子,如果你想要動畫去(演示:https://github.com/RainHaven/meteor-ui-hooks-demo/blob/master/simple-todos.js#L45- L62) – Akshat

+0

嵌套模板作品! –