【问题标题】:SafeStrings when using Ember's bindAttr?使用 Ember 的 bindAttr 时的 SafeStrings?
【发布时间】:2013-03-19 15:28:44
【问题描述】:

这是高度简化的,但我有如下内容:

<img src="www.example.com/image.jpg" {{bindAttr alt="view.altText"}} />

altText 绑定来自视图中的计算属性,该属性返回像&amp;amp;#x54; 这样的 HTML 字符,但随后 Ember 或 Handlebars(不确定)将其转义以输出,我最终在代码中看到的是&amp;amp;#x54; 在浏览器中显示为“T”而不是正确的 HTML 字符。

在计算属性中,我尝试了return new Handlebars.SafeString( '&amp;#x54;' ),但这只是抛出了一个关于期望字符串而不是对象的错误。

那么我该如何预防呢?

更新: Here's a github issue 关于此事。目前没有其他信息,但可能会在此线程之前更新。

【问题讨论】:

  • 传递给 bindAttr 的值通过了一些内部 Ember 处理。听起来我们没有检查SafeString。我不确定改变这一点会有多困难,但这绝对是值得考虑的事情。

标签: javascript model-view-controller ember.js handlebars.js javascript-framework


【解决方案1】:

Handlebars 对 {{ }} 之间的值进行转义,使用 {{{ }}} 来显示输出未转义的字符串。

来源:http://handlebarsjs.com/

【讨论】:

  • 已确认,这不适用于bindAttr 等助手(我试过{{{bindAttr alt="view.altText"}}}
  • 我能想到的最后一个选项是:alt="{{{unbound view.altText }}}" 但它不能改变。
  • 包裹在三重 { 中的未绑定助手有效。但是,正如您所说,该值不受约束,因此不会改变。
猜你喜欢
  • 1970-01-01
  • 2012-02-22
  • 1970-01-01
  • 1970-01-01
  • 2015-03-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-09
相关资源
最近更新 更多