转义CSS字符串与ember JS无法正常工作

时间:2015-10-22 20:07:09

标签: ember.js

像许多人一样(我认为),在将样式属性绑定到模板中的元素时,我会在控制台中收到警告。

例如,我有一个包含div的ember视图,该div具有以下样式属性:

style="{{view.isClosing}};"

现在,我收到警告,指出此字符串未正确转义,并且可能使其容易受到XSS攻击。

我转到此链接:http://emberjs.com/deprecations/v1.x/#toc_warning-when-binding-style-attributes

然后尝试将其放在我看来:

isClosing: Ember.computed('display', function () {
    if (this.get('conv.isClosing')) {
        return new Ember.Handlebars.SafeString("display:");
    } else {
        return new Ember.Handlebars.SafeString("display: " + this.get('display'));
    };
}),

警告不会消失,当我尝试使用函数escapeCSS,就像他们在doc中所说的那样,它告诉我没有定义escapeCSS。现在这是什么功能,我应该怎么做?

谢谢

3 个答案:

答案 0 :(得分:2)

正如this blog post中所述,您希望使用Ember.String.htmlSafe代替Ember.Handlebars.SafeString

isClosing: Ember.computed('display', function () {
    if (this.get('conv.isClosing')) {
        return new Ember.String.htmlSafe("display:");
    } else {
        return new Ember.String.htmlSafe("display: " + this.get('display'));
    };
}),

答案 1 :(得分:1)

我相信GJK是正确的。你的问题是你包括了引号。

<div style="{{view.isClosing}};">

应该是

<div style={{isClosing}}>

答案 2 :(得分:0)

所以我做到了。

我只是返回一个等于“display:;”的变量,而不是使用Ember.String.htmlSafe()方法。或“display:none;”最后用htmlSafe()调用。仍然不知道为什么Ember方法不起作用。

感谢您的回答。