저는 Angular와 함께 일하고 있는데, 저는 보통 jQuery를 사용하는 것에 문제가 있습니다.각도를 사용하면 클릭 이벤트를 요소에 바인딩하고 클릭하면 형제 요소를 위아래로 슬라이드 할 수 있습니까?
클릭 이벤트를 요소에 바인딩하고 클릭시 형제 요소를 위아래로 슬라이드합니다.
<div ng-click="events.displaySibling()"></div>
을 그리고이 무엇인지 내 컨트롤러 : 내 마크 업 기능과 NG 클릭 속성을 추가 한 각도를 사용
$('element').click(function() {
$(this).siblings('element').slideToggle();
});
:
이
은 jQuery를은 다음과 같은 형태가 될 것이다 다음과 같이 표시됩니다.지금까지 예상대로 작동하지만 어코드하는 법을 모르겠습니다. 슬라이드를 닦으십시오. 어떤 도움이라도 대단히 감사합니다.
업데이트
나는 지시어와 교체했다.
내 태그는 이제 다음과 같습니다 : 나는 내 컨트롤러에 있던 무슨 제거하고 새로운 지침을 만든
<div class="wrapper padding myevent"></div>
.
app.directive('myevent', function() {
return {
restrict: 'C',
link: function(scope, element, attrs) {
element.bind('click', function($event) {
element.parent().children('ul').slideToggle();
});
}
}
});
그러나 여전히 슬라이드 토글을 사용할 수 없습니다. slideToggle()이 Angular에서 지원됩니다. 어떤 제안?
는 일반적으로 당신이 컨트롤러에 반대로 지시에 DOM 조작을 넣고 싶다. – ken4z
위에서 언급 한대로 지시문은 모든 DOM 조작에 적합한 선택입니다. 컨트롤러에서 DOM에 액세스하는 경우 컨트롤러를 뷰에 연결하면 뷰를 변경할 수없고 컨트롤러가 여전히 작동하는지 확인할 수 있습니다. 몇 가지 다른 이유가 있지만 DOM 조작은 지시문에 따라야합니다. 사용자 지정 지시문을 작성하는 방법을 살펴 보겠습니다.이 예제는 매우 명확해야합니다. 아래에 간단한 예제를 제공합니다. – shaunhusain
Angular 이전에 jQuery를 포함 시키면 slideToggle이 jqLite에 포함되지 않는 것이 맞다고 생각합니다. 사용하기 전에 jQuery를 사용할 수 있습니다. 때로는 이것을 피하는 것이 가장 좋기 때문에 오래된 방식에 익숙하지 않고보다 우아하고 검증 가능한 솔루션을 놓치지 말고 다른 경우에는 jQuery를 포함하는 것이 좋습니다. – shaunhusain