2016-12-06 5 views
4

現在の場所パスに基づいてナビゲーションバーを削除しようとしています。DOM-ElementをAngularJSで削除する

これは私がこれまで持っているものである。この方法で

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

コンソールは言う:

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) 

は私が間違って何をしているのですか?

答えて

4

あなたDOM要素で使用ngIfと、このような何かを:

テンプレート:

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

コントローラー:

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

ngIfはDOM

+0

魅力的な作品です!ありがとうございました:) – Codehan25

1

から要素を削除しますお試しくださいdocument$documentではありません。あなたは、これは動作するはず持っているものを継続したい場合は

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

..コンソールエラーはなくなりましたが、navbarはまだ表示されています。 'navbar.remove();'を実行した後でもまだ – Codehan25

+0

が表示されていますか? – Julsy

0

私はナビゲーションバーを隠すの澤Rubeusの方法のように感じるが、より理にかなって、しかし:

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(); 
    } 
}); 

角度は、それのDOM要素のすべてをラップ要素に直接アクセスするには、最初の要素を取得する必要があります。

+0

..理由はわかりませんが、うまくいきません。私はZe Rubeusのアプローチに行く.. – Codehan25

関連する問題