Ich habe eine Website mit Angularjs Vorlagen, ein SPA. In einem meiner Templates verwende ich ein Tab-Control aus der AngulrUI-Bibliothek namens Ui-Tabset.Kann nicht manipulieren DOM in AngularJs Vorlage
Während das Steuerelement gerendert wird, wird ein ul
-Element erstellt und eine CSS-Klasse nav-tabs
hinzugefügt. Das steht im Konflikt mit vielen CSS-Einstellungen, die ich habe und macht es hässlich.
<uib-tabset active="activeJustified" justified="true" id="tabs">
<uib-tab class="hvr-underline-from-center" index="0" heading="שעות פתיחה">תוכן</uib-tab>
<uib-tab index="1" heading="גיל ומשקל">תוכן</uib-tab>
</uib-tabset>
nun stattdessen in die Bibliothek Code zu gehen und die Klasse zu entfernen, oder das Ändern der CSS mehrere Einstellungen außer Kraft zu setzen, wollte ich die Klasse mit jquery mit diesem Code entfernen: $("ul").removeClass("nav-tabs");
Das funktioniert gut, wenn ich es in der Konsole ausführen, nachdem die Seite geladen ist. Ich habe versucht, es in eine Funktion zu setzen und ng-init
aufrufen, aber das hat nicht funktioniert. Ich versuchte, die ViewContentLoaded Veranstaltung wie diese verwendet:
$scope.$on('$viewContentLoaded', function() {
$("ul").removeClass("nav-tabs");
});
nicht so gut funktionieren. Ich weiß das Problem ist der Code läuft zu früh und nicht meine Angular-Konfiguration, weil die Funktion zu ng-click
verbindet und klicken Sie nach dem Laden der Seite auch funktioniert gut.
Brennen Sie es in einer Direktive, nachdem das Element auch nicht funktioniert. Ich sehe den Code im Debugger jedes Mal ausgeführt, aber es tut nichts.
Zusammenfassend, wie kann der Code ausgeführt werden, nachdem die Seite vollständig Rendern beendet wurde?
aktualisieren
Ich löste es in der "richtigen" Art und Weise, durch eine Direktive. Immer noch nicht in der Lage, element
aus irgendeinem Grund zu verwenden, nur jquery
.
myapp.directive("removenavclass", function ($timeout) {
return {
link: function (scope, element, attrs) {
scope.$on('$viewContentLoaded', function() {
$timeout(function() {
$("ul").removeClass("nav-tabs"); //works
element.children().children()[0].removeClass("nav-tabs"); //sends an error to console saying "removeClass is not a function"
});
});
}
};
});
Versuchen jQuery zu vermeiden, wenn AngularJS wenn möglich verwenden. 'angle.element' unterstützt bereits' removeClass() 'und' addClass() '. – Stack
Ich habe versucht, Ihre Methode zu verwenden, indem Sie den Code in eine Direktive setzen und 'Element' wie folgt verwenden:' element.children(). Children() [0] .removeClass ("nav-tabs"); 'Ich erhalte einen Fehler in Die Konsole 'element.children (...). children (...) [0] .removeClass ist keine Funktion'. Ich debugged den Code und die Richtlinie funktioniert gut und wenn ich eine Uhr, "element.children() ..." ist genau das, was ich brauche. – TomerAgmon1
Sobald Sie auf die Elementreferenz ([0]) anstelle der angle.element-Referenz zugreifen (was von einem Aufruf wie children() zurückgegeben wird), ist die Methode removeClass nicht mehr verfügbar. – Patrick