【问题标题】:Show property which includes html tags显示包含 html 标签的属性
【发布时间】:2012-07-12 03:07:58
【问题描述】:

我有一个包含 html 标记的 ember 属性(<br /><strong><p><span> 和类似的东西)。

如何告诉 ember 不要转义此文本?是否有任何来自 ember 的默认 Handlebars 助手,还是需要我自己编写?

【问题讨论】:

    标签: ember.js handlebars.js


    【解决方案1】:

    来自http://handlebarsjs.com/

    {{expression}} 返回的 Handlebars HTML 转义值。
    如果您不希望 Handlebars 转义值,请使用“triple-stash”。

    {{{expression}}}

    【讨论】:

    • 以防万一有人在寻找 Emblem 等价物,== expression
    • 正如 morhook 所说,您也可以将值包装在 Ember.String.htmlSafe() 中。如果将值传递到您无法完全控制的插件/组件中,这将非常有用。
    【解决方案2】:

    Ember.js 中,您可以通过添加到String 原型的htmlSafe 方法来执行此操作,请参阅http://jsfiddle.net/pangratz666/jNAQ6/

    车把

    <script type="text/x-handlebars" >
        {{App.html}} - {{App.unescaped}}
    </script>​
    

    JavaScript

    App = Ember.Application.create({
        html: '<b>bold text</b>',
        unescaped: function(){
            return this.get('html').htmlSafe();
        }.property('html')
    });​
    

    【讨论】:

    • 这不起作用。 {{App.html}} 也会去除 html 元素
    • .htmlSafe() 是我需要的方法
    • 对于最新的 Ember (2.6.1),我使用了Ember.String.htmlSafe() method
    【解决方案3】:

    Ember 2.x,使用 JavaScript

    要使字符串不转义并使用 Ember 模板输出,您可以使用 htmlSafe helper。

    Ember.String.htmlSafe('<div>someString</div>')
    

    返回的字符串不会是被 Handlebars 模板引擎转义的 HTML。

    http://emberjs.com/api/classes/Ember.String.html#method_htmlSafe

    仅使用把手

    或者,您可以将原始 HTML 传递给 Handlebars 模板并使用三方括号获取原始 HTML 输出

    车把内部模板

    <div>{{{raw_html_content}}}</div>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多