2017-01-11 7 views
0

Я работаю над угловым приложением и имею сценарий, где я хочу сосредоточиться на текстовом поле на загрузке страницы. Я пробовал автофокус HTML5, но для этого нужно найти альтернативное решение, так как проблема совместимости с браузером одинакова.Разница между ng-init и onload для функции invoke [Angular JS]

Я планирую вызывать функцию на загрузке страницы, которая будет фокусироваться на поле ввода, которое я хотел. У меня следующие функции с угловым нг-INIT и OnLoad, чтобы загрузить функцию.

Я не уверен, какой метод следует выполнять в угловом контексте, так как я немного смущен между их разницей.

OnLoad

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

Угловые нг-INIT

<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

Что такое разница между init и нагрузкой на жизненный цикл страницы? это ответ –

ответ

0

OnLoad не в вашем угловом контексте. Функция onload - это функция обратного вызова в событии LOAD для DOM.

Ваш ng-init находится в угловом контексте. Вам нужно использовать угловой ng-init.

Функция ng-init, как показано в вашем коде, не работает как есть. Функция, определенная в ng-int, должна быть в угловом контексте. ваш focusOnInput() не находится в угловом контексте. Это в контексте javascript.

, если вы хотите использовать нг-инициализации вам нужно впрыснуть $ окно в контроллер, а затем использовать назначить focusOnInput вашему $ объему и использовать этот метод в нг-INIT

что-то вроде этого

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

...... 

$scope.myNewFunction = $window.focusOnInput; 

...... 



}]) 

, а затем используйте эту myNewFunction в своем ng-init.