我的目标是有一个 Facebook like 按钮,可以有条件地出现在 Ember 视图中。我的模板是:
{{#if condition}}
Click Like: <div class="fb-like fb_edge_widget_with_comment fb_iframe_widget" data-href="http://www.facebook.com/obnob" data-send="false" data-layout="button_count" data-width="100" data-show-faces="false"></div>
{{else}}
Nothing to like here!
{{/if}}
如果condition
在页面生命周期内发生更改,则类似按钮的 HTML 代码将相应地插入和删除。问题是如果在页面加载后插入like按钮的div,Facebook JavaScript库将不会解析它并将其变成like按钮。为此,您必须调用FB.XFBML.parse()
.
我尝试使用 的didInsertElement()
钩子Ember.View
,但这仅在视图第一次插入 DOM 时运行,而不是在它已经存在之后运行。
我试图通过在模板中添加一个脚本标签来解决这个问题:
<script>FB.XFBML.parse();</script>
这失败了,因为脚本标签干扰了 Metamorph 的脚本标签。
问题
- 每当 Metamorph 更改已渲染的 Ember 视图时,Ember 是否有运行代码的挂钩?
- 如何在 Ember 模板中编写脚本标签而不破坏 Metamorph 的标签?