2017-01-11 5 views
0

각도 응용 프로그램에서 작업 중이며 페이지로드시 텍스트 필드에 집중할 시나리오가 있습니다. 나는 HTML5 자동 초점을 시도했지만 동일한 대안에 대한 브라우저 호환성 문제가 있기 때문에 이에 대한 대체 솔루션을 찾아야합니다.함수 호출을위한 ng-init과 onload의 차이점 [Angular JS]

내가 원하는 입력 필드에 초점을 맞출 페이지로드에서 함수를 호출 할 계획입니다. 나는 다음과 같은 기능을 가지고있다 .ng-init 그리고 onload과 같은 기능을 가지고있다.

각도 차이에서 어떤 방법을 따라야하는지 잘 모르겠습니다. 그 차이점을 다소 혼란스럽게 생각합니다.

온로드

<body onload="focusOnInput()"> 
     <form name="resetPasswordForm"> 
      <input name="NewPassword" type="password"/> 
     </form> 
    </body> 
    <script> 
     function focusOnInput() { 
      document.forms["resetPasswordForm"]["NewPassword"].focus(); 
     } 
    </script> 

각도 NG-초기화

<body in-init="focusOnInput()"> 
     <form name="resetPasswordForm"> 
      <input name="NewPassword" type="password"/> 
     </form> 
     <script> 
      function focusOnInput() { 
      document.forms["resetPasswordForm"]["NewPassword"].focus(); 
      } 
     </script> 
    </body> 
+3

[onLoad와 ng-init의 차이점] 가능한 복제본 (http://stackoverflow.com/questions/18441775/difference-between-onload-and-ng-init-in-angular) – Sajeetharan

+0

페이지 수명주기의 초기화와로드의 차이점은 무엇입니까? 그 대답이다. –

답변

0

온로드는 각 상황에 있지 않습니다. onload 함수는 DOM의 LOAD 이벤트에 대한 콜백 함수이다.

귀하의 ng-init은 각도 컨텍스트입니다. 각도 ng-init를 사용해야합니다.

코드에 표시된 ng-init 기능이 그대로 작동하지 않습니다. ng-int에 정의 된 함수는 각도 컨텍스트에 있어야합니다. focusOnInput()이 각도 컨텍스트에 없습니다. 그것은 자바 스크립트 컨텍스트에서입니다. 당신이 NG-init를 사용하려는 경우

당신은 당신의 컨트롤러에 $ 창을 주입 한 다음 $ 범위에 focusOnInput를 할당 사용이

처럼 NG-초기화에

무언가를하는 방법을 사용해야합니다

angular.module().controller('TestController',['$scope','$window',function($scope,$window){ 

...... 

$scope.myNewFunction = $window.focusOnInput; 

...... 



}]) 

그리고 나서이 myNewFunction을 ng-init에서 사용하십시오.