Ändern der Farbe eines div auf ng-klicken und zurücksetzen der rest alle in Ihren normalen Farben
Ich versuche, ändern Sie die Farbe eines div auf click der ng-click
. Ich habe getan, die Hälfte der Arbeit. Ich bin in der Lage, schalten Sie die Farbe der div, wenn geklickt, aber ich brauche alle anderen divs, um wieder Ihre ursprüngliche Farbe. Es sollte nicht mehr als ein div, dass ist nicht seine ursprüngliche Farbe.
HTML-code-
<div ng-controller="MyCtrl">
Hello, {{name}}!
<div ng-init="item.isyellow = false" ng-repeat="item in realName"
ng-class="{yellow : item.isyellow}" ng-class-odd="'odd'" ng-class-even="'even'"
ng-click="item.isyellow =!item.isyellow" style="cursor:pointer">
{{item.id}}
{{item.name}}
</div>
</div>
CSS-
.odd{
background-color:white;
}
.even{
background-color:grey;
}
.yellow{
background-color:yellow;
}
Js-
var myApp = angular.module('myApp',[]);
function MyCtrl($scope) {
$scope.name = 'Superhero';
$scope.realName=[{"id":1,"name":"A"},{"id":2,"name":"B"},{"id":3,"name":"c"},{"id":4,"name":"D"},{"id":5,"name":"E"},{"id":6,"name":"F"}];
}
InformationsquelleAutor RHUL | 2015-09-12
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie verwenden, die ng-repeat-varaible $index, und verwenden Sie es, wählen Sie die Zeile.
Überprüfen Sie diese arbeiten : demo
HTML :
InformationsquelleAutor Moncef Hassein-bey
Ich habe eine funktionierende Geige hier. Im Grunde müssen Sie nur Ihre ng-klicken Sie auf, um eine Funktion auszuführen, wechselt die Farbe für das Element ausgewählt wurde, und dann hebt die Auswahl aller anderen Elemente. Wenn Sie nicht möchten, fügen Sie die "select" - Feld, wie ich es Tat, um Ihre Daten, Sie könnten dies tun, indem in die $index-Wert von ng-repeat.
http://jsfiddle.net/stephen_hartzell/h72ej0rL/
JavaScript:
InformationsquelleAutor Stephen Hartzell
Ich denken kann zwei Ansätze:
Ansatz 1
Ändern Sie Ihre
ng-click
um eine Funktion aufzurufen, die in einer Schleife durch das array vonrealName
und manuell zurückgesetzt werden alle anderen Objekte. Dies ist nicht der effizienteste Ansatz, aber es wird nicht erfordern viel refactoring.Javascript-Funktion
Ansatz 2
Es klingt wie Sie wirklich mehr daran interessiert, in der Hervorhebung eines ausgewählten Objekts. Also statt der manuellen Aktualisierung jedes Objekt, könnten Sie stattdessen weisen Sie auf ein separates Objekt namens
selectedObject
und haben gerade Ihreng-class
prüfen, ob dieitem == selectedObject
. Diese änderungen, wie Sie behandeln die Objekte im array, so könnte es nicht passen, den rest Ihres vorhandenen code. Aber basierend auf dem, was Sie fordern, ich denke, das ist ein sauberer Ansatz.Javascript
Sehen die Gabel-demo für diesen Ansatz.
InformationsquelleAutor ryanyuyu