是否有Meteor template.ready,而不仅仅是template.rendered?

时间:2013-01-20 19:52:34

标签: meteor

如何知道我在模板中关注的dom节点何时呈现。我希望能够使用jQuery或template.find选择它并修改它或附加回调?我一直在使用Template.templateName.rendered,但它的命中或遗漏。有时即使呈现模板,我想要的元素也没有插入到dom中。如果我在template.rendered中的setTimeout持续2-3秒然后尝试选择一个元素,它几乎总是在那里,但这显然是一个kludge。

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 个答案:

答案 0 :(得分:1)

rendered事件是执行此操作的正确方法,每次将模板插入DOM时都会触发。你有没有iframe尝试这样做? iframe可能会搞乱,在这种情况下,您可以尝试使用本地文档源测试iframe,以查看iframe的加载速度是否会影响find方法返回元素的方式。

在与DOM交谈之前,你绝对不应该等待任何事情,所以发生了一些奇怪的事情。