如何获得帮助等待创建DOM元素? [流星]

时间:2017-01-19 05:38:40

标签: jquery dom meteor twitter meteor-blaze

我正在尝试在我的应用程序中呈现嵌入式推文。我有一个mongo推特集合(tweetId)。我使用(document)_id作为div中的id,以便Twitter可以针对推文定位特定元素。

模板:

{{#each mongoCollectionOfTweetIds}}
  <div id={{_id}}> 
     {{embeddedTweet}} 
  </div>
{{/each}}

在“embeddedTweet”帮助程序中,我运行:

targetElement = document.getElementById("#{this._id}")
twttr.widgets.createTweet("#{this.tweetId}", targetElement)

我知道this._id通过console.log测试是准确的。我还验证了寻找上面的dom元素最终未定义。

所以,似乎数据上下文是通过流星出现的,但我调用的是twttr太快(即在dome元素存在于getelementbyid之前)?

挑战在于twttr需要为每次通话提供唯一的dom ID。

希望这里有更好的模式。

1 个答案:

答案 0 :(得分:0)

你必须等到模板被渲染之后才能追踪DOM元素。

Template.Foo.onRendered(function() {
});

在那里,您可以运行查询来查找您的DOM子项并调用twitter API。

帮助程序可以在数据更新和模板渲染时多次运行,因此在帮助程序中执行的任何操作都应该是幂等的。并且最好不要使用API​​。