簡體   English   中英

ng-init和onload之間的差異,用於函數調用[Angular JS]

[英]Difference between ng-init and onload for function invoke [Angular JS]

我正在開發一個有角度的應用程序,並且有一個場景,我想專注於頁面加載時的文本字段。 我嘗試了HTML5自動對焦,但由於存在瀏覽器兼容性問題,因此不得不為此尋找替代解決方案。

我打算在頁面加載時調用一個函數,該函數將重點放在我想要的輸入字段上。 我在Angular ng-initonload中具有以下函數以加載該函數。

我不確定我應該在角度環境中采用哪種方法,因為我對它們之間的差異幾乎不感到困惑。

負載

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

角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>

onload不在您的角度范圍內。 onload函數是DOM的LOAD事件的回調函數。

您的ng-init在角度環境中。 您需要使用angular ng-init。

代碼中顯示的ng-init函數無法按原樣工作。 ng-int中定義的函數應該在角度上下文中。 您的focusOnInput()不在角度上下文中。 在javascript上下文中。

如果您想使用ng-init,則需要將$ window注入到控制器中,然后對$ scope使用assign focusOnInput並在ng-init中使用該方法

像這樣的東西

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

 ......

 $scope.myNewFunction = $window.focusOnInput;

 ......



}])

然后在您的ng-init中使用此myNewFunction。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM