【问题标题】:inline javascript within handlebars template车把模板中的内联 javascript
【发布时间】:2012-05-03 10:04:15
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: ember.js disqus handlebars.js


    【解决方案1】:

    您必须将该小部件包装在自定义 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 来插入小部件。

    【讨论】:

    • +1,和 AFAIK,车把的想法是有一个无逻辑的模板
    • @louiscoquio 我的车把模板中没有逻辑。 JS 中的逻辑是关于何时显示模板。模板本身只有一个脚本标签。
    • @Rajat 我犯了一个错误,我很抱歉。
    • Handlebars 模板确实希望全面了解内部发生的情况。也就是说,在车把模板中发生的不是纯标记的任何事情,无论是逻辑还是其他,都应该在 {{ helper }} 表示法中发生。
    • 如果有人帮我解决这个非常相关的问题,我将不胜感激:stackoverflow.com/questions/12499921/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多