Angularjs-Stil-Tags

8

Ich kämpfe mit folgendem Verständnis: Wie kann ich Medien (query) abhängige Stile dynamisch zu Elementen / dem DOM hinzufügen?

Folgende Probleme stieß ich auf:

1) Ich weiß, dass AngularJS Tags nicht manipulieren kann <style> {{myMediaQueryStyles}} </style> in einer Direktive.

2) Medienabfragen, die als Inline-Stile mit ng-style eingefügt werden, funktionieren auch nicht

Ich habe folgende view-model.json

%Vor%

In einer einfachen Direktive versuche ich einfach, sie in ein <style> -Tag

zu schreiben %Vor%

Gibt es eine Problemumgehung, um medienrelevante Styles dynamisch zu Elementen oder dem gesamten Dokument in angularJS hinzuzufügen?

Ändern der Direktive template: '<div>{{view-model.contexts}}</div>' funktioniert, aber die Stile werden dann nicht angewendet.

Vielen Dank im Voraus!

    
wittgenstein 12.11.2013, 15:53
quelle

1 Antwort

7

Eine Problemumgehung wäre das Hinzufügen der relevanten Stile zum Element in der link -Funktion einer benutzerdefinierten Anweisung, wie in diesem gezeigt Plunk .

In einem einfachen Fall, in dem das viewModel direkt in der Steuerung verfügbar gemacht wird, würde die Direktive wie folgt aussehen:

%Vor%

Sie können den JSON auch von einer separaten Datei oder Remote-Quelle (wie im Plunk angezeigt) laden, indem Sie die Direktive anpassen:

%Vor%

Dies würde eine dynamische Aktualisierung der Stile ermöglichen. Dies wird im Plunk demonstriert, indem der Anweisung, die die Stile nach 3 Sekunden löscht, ein $ timeout hinzugefügt wird (Sie können sehen, dass sich der Text von schwarz nach schwarz ändert).

In beiden Fällen wäre das entsprechende HTML-Markup <style add-styles></style> .

    
Sarah 12.11.2013, 19:26
quelle