1

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

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()
4

1 回答 1

1

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

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

于 2013-01-21T02:38:48.010 回答