2012-12-05 13 views
35

Użycie wyrażeń takich jak to w stylu atrybut działa w Chrome, ale nie działa na IE8angularjs wyrażenie nie działa wewnątrz atrybutu stylu na IE8

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

http://jsfiddle.net/5VDMD/12/ (przetestować to wpisz liczbę w polu tekstowym)

Jakiekolwiek obejście tego problemu?

+2

Zamiast tego możesz spróbować użyć "ng-style". – Tosh

+2

Rozwiązaniem było ng-style = "{width: propertyInScope + '%'}" dzięki Davidowi https://groups.google.com/forum/?fromgroups=#!topic/angular/Bb6087Gv284 – user1877925

+0

Oto jsfiddle z rozwiązanie działa dobrze na IE8 http://jsfiddle.net/5VDMD/15/ – user1877925

Odpowiedz

55

Spróbuj

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

Dziękujemy! To jest najlepsza odpowiedź. – Tom

+3

Potrzebowałem pojedynczych cudzysłowów wokół własności css dla Angular 1.5, tak jak: 'ng-style =" {'width': progress + '%'} "' – NathanQ

13

Zrobiłem to działa w ten sposób:

w kontrolerze:

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

w HTML:

<div class="progbar" ng-style="getStyle(progress)"></div> 
4

Z jakiegoś powodu w IE Musiałem użyć

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

Chociaż moja była w dyrektywie pod powtórzeniem ng.

0

jeśli ktoś px stosowanie zamiast%, trzeba użyć tego

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

Myślę, że byłoby bardziej pomocne dla theOP i innych użytkowników, kiedy dodasz wyjaśnienia do swoich intencji – reporter

25

musiałem użyć ng-attr-style (choć nie trzeba używać funkcji).

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

Oto github discussion na temat tego problemu.