车把模板内的内联javascript

时间:2012-05-03 10:04:15

标签: ember.js disqus handlebars.js

在Handlebars模板中是否无法使用内联脚本?

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

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

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

小部件将包含在我的应用的子视图中。默认情况下,子视图不可见,但在我的Ember应用程序代码中按照某些逻辑显示。

1 个答案:

答案 0 :(得分: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}}

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