簡體   English   中英

在模板加載之前執行AngularJS控制器

[英]AngularJS Controller executing before template loads

我有一個電子郵件驗證鏈接,看起來像

 .when('/user/register/verify/:verify_code?', {
      controller: 'AngularRegisterVerifyPage',
      templateUrl: '/user/register/verify'
 })

我的輸入字段是這樣的。

input(ng-model="formData.verify_code", name="verify_code", type='text', class='form-control', placeholder='Verification Code', id="verify_code")

並且此代碼應在模板加載時運行,以將Parameter插入文本字段

 document.getElementById('verify_code').value = "Test"; // Debugging Test Code
 $scope.formSubmitted = false;
 if ($routeParams.hasOwnProperty("verify_code")) {
      document.getElementById('verify_code').value = $routeParams.verify_code;
 }

但是似乎控制器在模板實際加載之前執行了此操作,因為在頁面加載時,輸入字段為空。 關於如何正確執行此操作的任何信息都將非常有用,我嘗試使用類似“ Controller加載后加載模板”之類的東西,但未找到任何內容。 謝謝。

編輯:

我嘗試將ng-init="loadCode()"到輸入字段,但是仍然無法正常工作。

 $scope.loadCode = function() {
      if ($routeParams.hasOwnProperty("verify_code")) {
           console.log('Called');
           document.getElementById('verify_code').value = $routeParams.verify_code;
           console.log($routeParams.verify_code);
           console.log(document.getElementById('verify_code').value);
      }
 }

您無需通過在angularjs中操縱dom來更改輸入值。 Angular已經擁有許多強大的機制來幫助您減少開發工作。

就您而言,您只需將代碼更改為此:

.controller('AngularRegisterVerifyPage', function($scope, $routeParams){
     $scope.formData = {};
     if ($routeParams.hasOwnProperty("verify_code")) {
         //You change your value in your model, angular will render this to your html(view)
         $scope.formData.verify_code = $routeParams.verify_code;
     }

});

對於有角更新的人,這是一個有用的答案: 如果我有jQuery背景,“在AngularJS中思考”?

這是ngModel文檔。

好好享受 : )

暫無
暫無

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

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