2014-01-16 2 views
2

나는 다음과 같은 HTML이 :AngularJS와 지시어 - 클래스의 이름으로 다음 요소를 선택

<div> 
    <input type="text" ng-model="search.q" special-input> 
    <ul class="hidden">...</ul> 
    <ul class="hidden bonus">...</ul> 
</div> 

그리고 다음 지시문 :

myApp.directive('specialInput', ['$timeout', function($timeout) 
{ 
    return { 
    link: function(scope, element) { 
     element.bind('focus', function() { 
     $timeout(function() { 
      // Select ul with class bonus 
      element.parent().find('.bonus').removeClass('hidden'); 
     }); 
     }); 
    } 
    } 
}]); 

내가 jqLite를 사용하여 ul.bonus을 선택하고 싶지만 할 수 없습니다를 길을 찾아라. .next (". bonus")로 시도했지만 선택기가 완전히 무시되고 첫 번째 ul이 선택됩니다. 왜 내가이 일을 할 수 없는지 아무도 모른다.

P. jQuery없이 AngularJS 내부 jqLite에 의존하고 있습니다.

감사합니다.

답변

2

당신은 이것을 달성하기 위해 지침을 필요로하지 않습니다

<div> 
    <input type="text" 
      ng-model="search.q" 
      ng-focus="bonus=true" 
      ng-blur="bonus=false"> 
    <ul class="hidden">...</ul> 
    <ul ng-show="bonus">...</ul> 
</div> 

을 사용자의 요구가 더 복잡한 컨트롤러에 bonus 상태에 대한 결정을 넣어 경우.

+0

고마워요,이 방법은 훨씬 낫습니다. – Angelin

+0

안녕하세요,하지만 실제로 jqlite를 사용하여 클래스별로 다음 요소를 선택하는 방법은 무엇입니까? 내 경우에는, 나는 그것을해야하지만 방법을 알아낼 수 없습니다. 지금까지 나는'link.parent(). next(). toggleClass ('active');를 실행했다. 물론 예상대로 작동하지 않는다. jQuery와 동일한 것은'link.parent(). siblings ('. active')입니다. toggleClass ('active');'. 미래의 답변 주셔서 감사합니다. – lkartono