2013-01-20 22 views
1

如何知道我在模板中關心的dom節點何時呈現。我希望能夠選擇它與jQuery或template.find並修改它或附加回調?我一直在使用Template.templateName.rendered,但它被擊中或錯過。有時我想要的元素還沒有插入到DOM中,即使模板被渲染。如果我在模板中設置超時時間爲2-3秒,然後嘗試選擇一個元素,它幾乎總是在那裏,但這顯然是一個混亂。有流星template.ready,不只是template.rendered?

Template.templateName.rendered = -> 
    # This is a kludge! 
    wait 2000, => 
     $(window).resize => 
      # Neither of these selectors find anything without the wait 
      $iframe = $(this.find('#embed-html iframe')) 
      width = $('#embed-html').innerWidth() 
      resizeIframe($iframe, width) 
     $(window).resize() 

回答

1

rendered事件是這樣做的正確的方式和每個模板被插入到DOM的時間將被解僱。你有沒有嘗試這樣做沒有iframe? iframe可能會搞砸,在這種情況下,您可以嘗試使用本地文檔源測試iframe,以查看加載iframe的速度是否影響find方法返回元素的方式。

在與DOM交談之前,您絕對不應該等待任何事情,所以有些奇怪的事情正在發生。

+0

謝謝,這是奇怪的。我正試圖獲取一些我收到之前訂閱的數據。我爲我的訂閱http://docs.meteor.com/#meteor_subscribe添加了一個onComplete回調函數,並修復了它。 – smothers