2013-10-30 1 views
1

2 가지 형식이 있습니다. 페이지를로드 한 후 첫 번째가 보이고 다른 쪽이 숨겨집니다. 처음에 Add-button을 클릭하면 제 2 양식을 나타내는 애니메이션이 작동하지 않습니다. 하지만 첫 번째 클릭 후 취소 버튼을 클릭하고 다시 버튼을 클릭하면 모든 것이 올바르게 작동합니다. 어떻게하면 "첫 번째 클릭"에도이 기능을 사용할 수 있습니까? 관심있는 사람들이 있다면AngularJS 애니메이션은 처음에는 작동하지 않지만 처음 클릭하면 모두 양호합니다.

, 나는 다음 튜토리얼에서 적응하기 위해 시도하고 내 plunker는 여기 HTML은 자바 스크립트 애니메이션 부분은 다음과 같습니다

<div ng-controller="MainCtrl as main" xmlns="http://www.w3.org/1999/html"> 
    <form ng-hide="main.showNewUserForm" class="ff-toggle-animation"> 
    <input type="text" id="search" ng-model="main.username" size="30" placeholder="New username here"> 
    <button type="submit" class="btn btn-primary" ng-click="main.showNewUserForm=true">Add</button> 
    </form> 
    <form ng-show="main.showNewUserForm" class="ff-toggle-animation"> 
    Username: <input type="text" id="add" ng-model="main.username" size="30" placeholder="New username here"><br> 
    Full name: <input type="text" ng-model="main.name" size="30" placeholder="Add new user full name here"><br> 
    Description: <textarea id="description" rows="2" ng-model="main.description" placeholder="Add user description here"></textarea> 
    <button type="submit" ng-click="main.save()">Save</button> 
    <button type="submit" ng-click="main.showNewUserForm=false">Cancel</button> 
    </form> 
    Some content after... 
</div> 

입니다 http://plnkr.co/edit/02E8eQFHQVynK3mE1IMg?p=preview

입니다 http://www.yearofmoo.com/2013/08/remastered-animation-in-angularjs-1-2.html :

app.animation('.ff-toggle-animation', function() { 
    return { 
    addClass : function(element, className, done) { 
     if(className == 'ng-hide') { 
     jQuery(element).hide(400, done); 
     } 
     else { 
     done(); 
     } 
    }, 
    removeClass : function(element, className, done) { 
     if(className == 'ng-hide') { 

     /* remove it early so you can animate on it since 
      it is not possible using element.css() to set 
      a style using !important */ 
     element.removeClass('ng-hide'); 
     jQuery(element).show(400, done); 
     } 
     else { 
     done(); 
     } 
    } 
    }; 
}); 
+0

이것은'ng-hide'로 작업하는 기이 한 방법입니다. 첫 번째 요소에는 'ng-hide'라는 속성이 있습니다.이 클래스의 클래스는 처음에는 작동하지 않을 가능성이 있습니다. 다음 ... 내부 CSS 애니메이션을 사용하여 'ng-hide'를 사용하고 jQuery를 제거하지 않는 이유는 무엇입니까? – charlietfl

+0

@charlietfl, 다양한 질문에 답변 해 주셔서 감사합니다! "내부 CSS 애니메이션"은 기본 애니메이션과 같은 것으로, 별도의 규정이없는 한 기본 애니메이션과 같이 애니메이션을 포함 할 CSS를 제공 할 필요가 없습니다. 나는 자습서와 API를 읽으려고 노력하고 있지만, 언급 한 내용을 본 적이 없다. (그러나 나는 그 내용을 놓친 것 같다.) 내가 올바르게 당신을 이해한다면 어떻게이 애니메이션을 시작할 수 있습니까? 내가 본 모든 예제는 애니메이션을 정의하기 위해 제공된 CSS 또는 JavaScript를 가지고 있습니다 ... – EricC

+0

여기에 애니메이션 스크립트를 없애고 html에서 해당 클래스를 제거한 펑크가 있습니다. 하지만 이제는 애니메이션없이 표시/숨기기 만합니다. 어쩌면 당신은 이것이 당신이 묘사하는 쉬운 방법으로 움직이는 방법을 보여줄 수 있습니까? http://plnkr.co/edit/OnUuKc6ztlzMfNWPnZuf?p=preview – EricC

답변

2

나는 튜토리얼을 제대로 따라 가지 못했다는 것을 알 수있다. 내가 애니메이션을 performe 수

element.removeClass('ng-hide'); 

나는이 같은 요소를 숨길 필요가 :

jQuery(element).hide(); 

그래서 지금 애니메이션의 NG 숨기기 제거 라인 전에

show 부분은 다음과 같습니다 :

removeClass : function(element, className, done) { 
    if(className == 'ng-hide') { 
    jQuery(element).hide(); 

    /* remove it early so you can animate on it since 
    it is not possible using element.css() to set 
    a style using !important */ 
    console.log(element); 
    element.removeClass('ng-hide'); 
    jQuery(element).show(400, done); 
    } 
    else { 
    done(); 
    } 
} 
+0

Yipee! 나는 같은 문제가 있었지만 튜토리얼을 읽지 않았다 ... 튜토리얼은 무엇인가? 나는 이것을 읽고 있었다. .. http : //www.yearofmoo.com/2013/08/remastered-animation-in-angularjs-1-2.html .... 그러나 그것은 hide를 언급하지 않는다. .. 나 높이를 0으로 설정하려했지만 작동하지 않았다. :) – samneric

+0

흠 사실 나는 잊어 버렸지 만, 그것이 연결된 것으로서의 유일한 것임을 확신한다. 그러나 나는 거기에서도 볼 수 없다. 어딘가에있을 수도있다. 그렇지 않으면, 미안 .... – EricC

관련 문제