2016-07-03 2 views
0

을 타겟으로하고 각도로 클릭했지만 jQuery없이 클릭하려는 요소를 표시합니다. 나는 각도에 새로운 오전각도 js에있는이 키워드는 유형 오류

TypeError: this.querySelector is not a function.

:

$scope.hide = function() { 
    this.querySelector('ul').style.display = 'none' 
}; 

는하지만이 오류를 얻고있다. 내가 뭐 잘못하고 있니?

+0

[ "어떻게합니까"이 "키워드를 사용할 수 있습니까?"(http://stackoverflow.com/questions/3127429/how-does-the-this-keyword-work) – Jeroen

+0

를 'querySelector'는'document'의 속성입니다. '문서 '수준의 HTML 변경을 수행하는 경우 아마도 응용 프로그램 논리에 대해 잘못 생각할 것입니다. 당신은'ng-show','ng-if' 또는 유사한 것을 대신 사용해보아야합니다. 각도로 생각하는 방법에 대한 자세한 예제는 http://stackoverflow.com/questions/14994391/thinking-in-angularjs-if-i-have-a-jquery-background/15012542#15012542를 참조하십시오. – Claies

답변

1

해당 함수 안에있는 this은 참조하는 것으로 생각하는 객체를 참조하지 않습니다 (디버깅 및/또는 로깅 시도). 나는 how the this keyword works in Javascript에 독서를 제안한다.

대신 document.querySelector을 찾고 있습니다.

어쨌든, 표시/숨기기를위한 "각도 방식"은 ngShow과 같은 지시문을 사용합니다. 예컨대 this 키워드는 객체에 대한 참조입니다 :

$scope.isVisible = true; 
$scope.hide = function() { $scope.isVisible = false; }; 
<div ng-show="isVisible">...</div> 
1

. 여기에는 객체가 없으므로 객체를 참조 할 필요가 없습니다. 그렇기 때문에 쿼리 선택기가 this이 정의되지 않은 함수가 아닌 이유입니다. 을 document으로 변경하십시오. 단지의 중복에 대한

0
$scope.hide = function() { 
    document.querySelector('ul').style.display = 'none' 
}; 
+0

답변 인 이유를 설명해 주시면 도움이 될 것입니다. 그것은 질문자와 미래의 독자들에 대한 학습과 이해를 돕습니다. – Jonathon