2017-01-11 2 views
0

Ich arbeite an einer eckigen Anwendung und habe ein Szenario, wo ich auf ein Textfeld beim Laden der Seite konzentrieren möchte. Ich habe HTML5 Autofokus versucht, muss aber eine alternative Lösung dafür finden, da es ein Browserkompatibilitätsproblem für dasselbe gibt.Unterschied zwischen ng-init und onload für Funktion aufrufen [Angular JS]

Ich plane, eine Funktion beim Laden der Seite aufzurufen, die sich auf das gewünschte Eingabefeld konzentrieren wird. Ich habe die folgenden Funktionen mit Winkel ng-init und onload, um die Funktion zu laden.

Ich bin nicht sicher, welche Methode sollte ich im eckigen Kontext folgen, da ich zwischen ihrem Unterschied wenig verwirrt bin.

onload

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

Angular ng-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

Mögliches Duplikat von [Unterschied zwischen onLoad und ng-init in eckig] (http://stackoverflow.com/questions/18441775/difference-between-onload-and-ng-init-in-angular) – Sajeetharan

+0

Was ist das? Unterschied zwischen init und laden auf Seitenlebenszyklus? Das ist die Antwort –

Antwort

0

onload ist in Ihrem Winkel Kontext nicht. Die Onload-Funktion ist eine Rückruffunktion für das LOAD-Ereignis von DOM.

Ihr ng-init befindet sich im eckigen Kontext. Sie müssen angular ng-init verwenden.

Die in Ihrem Code gezeigte ng-init-Funktion funktioniert nicht so wie sie ist. Die in ng-int definierte Funktion sollte im eckigen Kontext stehen. Ihr focusOnInput() befindet sich nicht im eckigen Kontext. Es ist in Javascript-Kontext.

wenn Sie verwenden ng-init Sie benötigen $ Fenster in Ihrem Controller zu injizieren und dann focusOnInput zu Ihrem $ Bereich verwenden zuweisen und verwenden Sie diese Methode in ng-init

so etwas wie dieses

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

...... 

$scope.myNewFunction = $window.focusOnInput; 

...... 



}]) 

und dann verwenden Sie diese myNewFunction in Ihrem ng-init.

Verwandte Themen