14

有没有办法在 Handlebars 模板中包含内联脚本?

<script type="text/x-handlebars">
    I'm a row of type "foo"
    <script type="text/javascript">alert('hi');</script>
</script>

当上述模板呈现时,内联脚本被删除。

我想要做的是在页面上包含 disqus 小部件。该小部件基本上是一些标记+ disqus 脚本。

该小部件将包含在我的应用程序的子视图中。子视图默认不可见,但根据我的 Ember 应用程序代码中的某些逻辑显示。​</p>

4

1 回答 1

10

您必须将该小部件包装在自定义 Ember.View 中,以在包装视图的 didInsertElement 中处理实例化它并将其添加到 DOM。Ember 期望,尤其是在把手模板内部,能够完全控制 DOM 操作,它通过结合把手魔术和 Ember.View 创建来做到这一点。定义自定义视图后:

MyApp.DisqusView = Em.View.extend({
    didInsertElement: function() {
        // create widget and append it to this.$()
    }
});

您可以在车把模板中使用它:

{{view MyApp.DisqusView}}

出于安全原因,您的视图不应添加Script 标签,而应直接执行任何 JS 以插入小部件。

于 2012-05-03T11:35:14.413 回答