[英]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中思考”?
好好享受 : )
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.