2016-12-06 4 views
4

Ich versuche eine Navbar basierend auf dem aktuellen Pfad zu entfernen.DOM-Element mit AngularJS entfernen

Dies ist, was ich bisher:

angular.module('myModule') 
    .controller('MainController', function ($location, $document) { 
    if ($location.path().indexOf('resetpass') > -1) { 
     var navbar = angular.element($document.querySelector(".top-navbar")); 
     navbar.remove(); 
    } 
    }); 

Mit diesem Ansatz die Konsole sagt:

angular.js:14110 TypeError: $document.querySelector is not a function 
at new <anonymous> (main.controller.js:6) 
at Object.invoke (angular.js:4762) 
at $controllerInit (angular.js:10518) 
at nodeLinkFn (angular.js:9416) 
at compositeLinkFn (angular.js:8757) 
at compositeLinkFn (angular.js:8760) 
at publicLinkFn (angular.js:8637) 
at angular.js:1808 
at Scope.$eval (angular.js:17913) 
at Scope.$apply (angular.js:18013) 

Was mache ich falsch?

Antwort

4

Verwendung ngIf in Ihrem DOM Element und etwas tun, wie folgt aus:

Vorlage:

<element ng-if="hideElemet"></element> 

Controller:

if ($location.path().indexOf('resetpass') > -1) { 
     $scope.hideElement = false 
} 

ngIf wird das Element aus dem DOM

+0

Funktioniert wie ein Charme! Danke :) – Codehan25

1

entfernen Versuchen Sie es mit document , nicht $document.

var navbar = angular.element(document.querySelector(".top-navbar")).remove(); 
+0

..der Konsolenfehler ist weg, aber die Navbar ist immer noch sichtbar. – Codehan25

+0

weiterhin sichtbar, nachdem Sie 'navbar.remove();' ausgeführt haben? – Julsy

0

ich wie Ze Rubeus Weise fühlen sich die navbar des Versteckens macht mehr Sinn, aber wenn Sie mit den Vorgang fortsetzen möchten, was haben Sie diese funktionieren sollte:

angular.module('myModule') 
.controller('MainController', function ($location, $document) { 
    if ($location.path().indexOf('resetpass') > -1) { 
    var navbar = angular.element($document[0].querySelector(".top-navbar")); 
    navbar[0].remove(); 
    } 
}); 

Angular Wraps alle es DOM-Elemente ist, Um direkt auf das Element zugreifen zu können, müssen Sie das erste Element greifen.

+0

.. weiß nicht warum, aber es wird nicht funktionieren. Ich gehe mit der Annäherung von Ze Rubeus .. – Codehan25

Verwandte Themen