2015-01-24 13 views
5

Wie kann ich die Hintergrundfarbe mit ng-style ändern?Hintergrundfarbe mit ng-Style ändern

dieser Div wird wiederholen, so dass der eine der Farbe von DB ist. Für die plnkr i fixiert nur die Farben, sondern in meinem Beispiel ist wie folgt:

<div class="col-md-offset-0 col-md-2" ng-repeat="type in types" style="margin-bottom:5px;"> 
     <div class='container' divCheckbox ng-style="{'background-color':(isSelected?'{{type.color}}':'#ccc')}> 
      <input type='hidden' ng-model="type.show" /> 
      <div class="label">{{type.name}}</div> 
     </div> 
</div> 

und die Richtlinie:

.directive('divCheckbox', function() { 
      return { 
       restrict: 'A', 
       link: function (scope, el, attr) { 
        scope.isSelected = el.find('input').val() == 'false'; 
        el.on('click', function() { 
         scope.isSelected = !scope.isSelected; 
         scope.$apply(); 
        }); 
       } 
      } 
     }); 

Heres mein plnkr: http://plnkr.co/edit/onLA8vSbtwQu1OxZrKzT?p=preview

Antwort

3

Sie können nicht ternären tun Bedingungen innerhalb eines Tags und Sie haben einen Fehler, da Sie background-color nicht angegeben haben. Sie müssen es entweder angeben oder camelCase verwenden, während die Bedingungen im Controller festgelegt werden sollten.

So ist das Update einen Bereich Variable bezeichnet eine Farbe (oder den vollen Stil Objekt) und es wie folgt verwendet werden: http://plnkr.co/edit/iYkSa2I1ysZutdkAKkuh?p=preview


UPDATE

Hier ist ein Beispiel Sie verwenden könnten Machen Sie Ihren Code mit Ihrer DB arbeiten (ich rufe externe JSON hier, aber das Prinzip ist das gleiche): http://plnkr.co/edit/Kegs95NNyGGySMDzhQed?p=preview

Auf diese Weise können Sie auch die "ausgewählte" Farbe holen. Das ist so ziemlich alles, was ich Ihnen mit den von Ihnen zur Verfügung gestellten Informationen sagen kann.

+0

Tks Shomz, nur eine Frage, wie in der Richtlinie auf die Daten von DB zugreifen kann (die Zeile im Moment hört), weil die Farbe aus der DB ist „{{type.color}}“ – Luis

+0

Gern geschehen. Hmmm, im Idealfall könnten Sie einen Dienst in den Controller einfügen und die Daten so holen (einfach den Farbwert einer richtigen Variablen zuweisen, die Sie in der Ansicht verwenden). Der Service wäre zuständig für das Abrufen der Daten aus der Datenbank. – Shomz

+0

Shomz, ändern Sie es einfach in ng-style = "{'Hintergrundfarbe' :(isSelected? '{{Type.color}}': '# ccc')} wie Sie sagten, aber aus irgendeinem Grund funktioniert nicht In der Konsole geben Sie mir keine Fehler – Luis

-1

youse:

return {backgroundImage:'someimg'}; 
0

beide sind unterschiedliche Art. Verwenden