在IE8中,AngularJS表达式无法在style属性内工作。

37

在 Chrome 上使用这样的表达式可以作用于 style 属性,但在 IE8 上无法生效。

style="width:{{progress}}%"

http://jsfiddle.net/5VDMD/12/ (请在文本框中输入数字以测试)

有没有解决这个问题的方法?


2
你可能想尝试使用'ng-style'代替。 - Tosh
2
解决方案是 ng-style="{width: propertyInScope + '%'}",感谢 David https://groups.google.com/forum/?fromgroups=#!topic/angular/Bb6087Gv284 - Christian Quirós
这是带有解决方案的jsfiddle,可以在IE8上正常工作http://jsfiddle.net/5VDMD/15/ - Christian Quirós
顺便说一下,即使在IE11中也不起作用。 - Spadar Shut
5个回答

57

尝试

ng-style="{ width: progress + '%' }"

谢谢!这是最好的答案。 - Tom
3
我需要在 Angular 1.5 中的 CSS 属性周围加上单引号,像这样:ng-style="{ 'width' : progress + '%' }" - NathanQ

26

我不得不使用ng-attr-style(尽管我不需要使用一个函数)。

<div ng-attr-style="width: {{value}}%"></div>

这里有一个关于这个问题的Github讨论


13

我是这样实现的:

在控制器中:

$scope.getStyle = function(progress){
    return {
        width: progress + "%"
    }
}

在HTML中:
<div class="progbar" ng-style="getStyle(progress)"></div>

4
出于某种原因,在IE中我不得不使用


ng-attr-style="{{METHOD_TO_RETURN_SOME_STYLE()}}"

尽管我的指令在ng-repeat下面。

0

如果有人使用 px 而不是 %,你必须使用这个

ng-style="{ width: progress + \'px\' }"

我认为当你解释一下你的意图时,这对于楼主和其他用户会更有帮助。 - Reporter

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接