AngularJS $variable beobachten und bewerten ng-Klasse Ausdruck
Ich versuche zu implementieren ist ein Lesezeichen-like-Funktion in meine app und beobachten eine variable, die speichert alle Lesezeichen-ID. Basierend auf die variable, die ich zu erzählen habe ng-class
überdenken Sie die Funktion Ausdruck so Klasse bookmarked
bekommt Hinzugefügt oder nicht.
Wie sage ich ng-class
wieder zu laufen, wenn die variable $scope.Bookmarks
verpasst?
<a ng-repeat="event in events"
ng-class="isBookmarked(event.id)"
class="icon__bookmark"></a>
wie ist das mit jquery?
Ist die isBookmarked(event.id) nicht immer aufgerufen wird, wenn die Lesezeichen aktualisiert werden.
Teilen, mehr Informationen, controller-code. angularJs automatisch einen call-isBookmarked wenn jede Veränderung geschah im Rahmen.
Ist die isBookmarked(event.id) nicht immer aufgerufen wird, wenn die Lesezeichen aktualisiert werden.
Teilen, mehr Informationen, controller-code. angularJs automatisch einen call-isBookmarked wenn jede Veränderung geschah im Rahmen.
InformationsquelleAutor Martin Broder | 2014-04-01
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn die Lesezeichen-ID ' s sind änderungen im code behandelt, von Winkel (wie bei einem controller, einer Richtlinie, einer Dienstleistung, eines $http-Callbacks, etc.) dann brauchen Sie nicht, überhaupt etwas zu tun. Eckig automatisch neu zu bewerten
isBookmarked(event.id)
wenn es muss, um zu gewährleisten, dass die UI ist immer up to date.Wenn aus irgendeinem Grund die updates muss werden, die außerhalb des Codes, werden durch eckige (wie in einer externen Bibliothek), dann können Sie es manuell erzwingen Winkel zu aktualisieren. Es ist jedoch sehr zu empfehlen, um nur sicherzustellen, dass der code bearbeitet wird eckig. Sie können in der Regel tun dies, aber es hängt von der situation ab.
Wenn Sie brauchen, um ihn zu zwingen, dann verwenden Sie
$scope.$apply
wie folgt:Ja, wenn die
$scope.currentTime=currentTime;
erfolgt innerhalb von ein Stück code, das heißt nicht von eckig (für mich bedeutet dies oft, dass es in eine reguläre JS-callback-Funktion wie ein Ereignis-handler), dann die UI nicht aktualisiert werden mit dem neuen Wert auf den Umfang. Das ist, wenn Sie verwenden müssen$scope.apply
, wie Sie getan haben 🙂InformationsquelleAutor alexsanford1
Vorausgesetzt, die Klasse, die Sie möchten, fügen Sie eine Klasse mit dem Namen "Lesezeichen", um die Anker-Tags und isBookmarked gibt einen booleschen Wert zurück, verwenden Sie diese (fiddle):
Sollten Sie nicht haben, rufen Sie $dann gelten, wenn die Lesezeichen-array im controller finden Sie in der Geige, die ich zur Verfügung gestellt.
InformationsquelleAutor Brocco
Versuchen
$route.reload()
. Es funktioniert sehr gut für Richtlinien, die nur einmal ausgewertet, wenn die Seite geladen wird (wie der Typ, der verwendet JQuery zu tun, DOM-manipulation).InformationsquelleAutor Piacenti