2016-08-09 12 views
2

ich den folgenden Code haben, der den Benutzer Avatar zeigt:AngularJS und IE Ausgabe

<div class="dashboard_image" style="background-image:url({{(user.avatar!=null)?user.avatar:'/img/general_user.svg'}})" style="width:200px;height:200px"></div> 

Wenn Benutzer keine Bild haben, user.avatar kommt null.

In Chrome funktioniert gut, aber nicht in IE 11. Was ist los?

+0

Haben u überprüft, dass, wenn Ihr HTML-Dokument richtig gemacht wird (ob der Stil, dass (Element enthält den richtigen Wert)? Nach dem Lesen Ihrer Kommentare, bezweifle ich, dass Ihr Problem nicht auf der eckigen Seite ist, sondern etwas mit dem [SVG-Anzeigeproblem in IE 11] zu tun hat (http: // stackoverflow .com/fragen/27494296/svg-nicht-zeigen-in-ie11). – MMhunter

+0

@MMhunter Ich dachte schon, aber im Header ist das SVG perfekt dargestellt. Das ist das Seltsame! – domoindal

Antwort

3

Versuchen Sie es mit ng-style, die für diesen Zweck existiert.

https://docs.angularjs.org/api/ng/directive/ngStyle

<div 
    class="dashboard_image" 
    style="width:200px;height:200px" 

    ng-style="{ 
     backgroundImage: 'url(' + (user.avatar!=null ? user.avatar : '/img/general_user.svg') + ')' 
    }"> 
</div> 

(nicht getestet)

+0

Es tritt ein Fehler auf: angular.js: 13550 Fehler: [$ parse: Syntax] http://errors.angularjs.org/1.5.5/$parse/syntax?p0=%2F&p1=not%20a%20primary..._user .svg% 20% 2B% 20 ')'% 20% 7D & p4 =% 2Fimg% 2Fgeneral_user.svg% 20% 2B% 20 ')'% 20% 7D – domoindal

+0

Verliere die '{{' und '}}' geschweiften Klammern von der ng-style Ausdruck: '{ backgroundImage: 'url (' + (benutzer.avatar! = null)? user.avatar: '/img/general_user.svg)' }' – Duncan

+0

Jetzt fehlerfrei, aber nicht anzeigen Bild in keinem Fall. – domoindal

0

Sie sollten etwas tun:

<div class="dashboard_image" ng-style="{'background-image': user.avatar!=null ? 'url(user.avatar)' : 'url(/img/general_user.svg)'" style="width:200px;height:200px"></div> 
+0

Das Hauptproblem bleibt noch. Falls kein Avatar vorhanden ist, wird das Standardbild nicht in IE11, sondern in Chrome angezeigt. – domoindal