2013-10-14 1 views
0

내가 AngularJS와의 오버레이 (또는 모달 창을) 만들려고하고 그리고 난 지금까지 HTML/CSS 레이아웃을 생성하고 간단이접근 바인드합니다은

<section class="calendar"> 
    <a open-overlay="overlay-new-calendar">Add New Calendar</a> 
</section> 



<section class="overlay overlay-new-calendar"> 
    <span class="bg"></span> 
    <form class="wrap"> 
     <header> 
      Add a New My Calendar 
     </header> 

     <div class="main"> 
      <label>Name<input type="text" required ng-model="newCalendar.calendar_name" /></label> 
      <label>Color<input type="text" required ng-model="newCalendar.calendar_color" /></label> 
     </div> 

     <footer> 
      <button type="submit">Add</button> 
      <a close-overlay="overlay-new-calendar">Cancel</a> 
     </footer> 
    </form> 
</section> 

처럼 보이는 넣어 그래서 여기에 내가 앵커를 가지고있다 <a open-overlay="overlay-new-calendar">Add New Calendar</a> 어디 내가 직접 열고 오버레이 정확한 지침을 오버레이를주는 그 지시어로 attr로하고 싶습니다. 이제 나는이

fixEvents.directive('openOverlay', function() { 
    return function(scope, elem, attr) { 
     elem.bind('click', function() { 
      alert(attr.open-overlay); 
      $('.overlay-new-calendar').show(); 
     }); 
    } 
}); 

을 tryed 그러나 ATTR이 overlay-new-calendar를 반환 내가 얻을 수 없습니다. 또한 내가 어떻게 쇼를 할 수 있는지 jquery없이 누구인지 알고 : D 대단히 감사합니다, 대니얼!

답변

2

peterorum이 정확합니다.

는 그의 대답에 정교하게하려면 다음을 수행해야합니다

  1. 난 당신이 scope.newCalendar 어딘가에 정의했다고 가정합니다. scope.isNewCalendarOverlayVisible = false를 같은 위치에 정의하십시오.
  2. 오버레이를 여는 링크 또는 버튼의 속성으로 ng-click = "isNewCalendarOverlayVisible = true"를 추가하십시오.
  3. 오버레이에 ng-show = "isNewCalendarOverlayVisible"을 추가하십시오.

이 방법으로 오버레이가 해당 스코프 속성을보고 있는지 여부를 알 수 있습니다. 버튼을 클릭하면 해당 속성이 true로 변경되고 모달이 표시됩니다.

+1

폼을 다시 숨길 준비가되면'isNewCalendarOverlayVisible = false'를 설정하십시오. – KayakDave

+0

대단히 고마워,이 새로운 수준으로 날 데려 갔다 :) –

2

jQuery없이 표시 또는 숨기기는 속성을 사용하여 수행됩니다. "ng-show = myValue". 그래서 귀하의 지시는 모델의 가치를 바꿀 것입니다. scope.myValue = true;

속성에 액세스하는 것은 attr.openOverlay 여야합니다. 속성 이름은 지시문에서 정규화됩니다.

+0

정말 고마워요. –

1

attr은 요소의 속성을 표준화합니다. 속성 open-overlaydata-open-overlay 등과 동일하게 취급되며 attr.openOverlay을 통해 액세스 할 수 있습니다.

여기에 좀 더 정보가있다 : http://docs.angularjs.org/api/ng.$compile.directive.Attributes

보여주는 당신이 peterorumng-show의 대답을 사용할 수 있습니다 숨어 들어가.