[英]Can I init an Angular ngModel in html, and then use its value in controller?
HTML:
<div ng-controller="MyController">
<form>
<!-- one way to do it -->
<input ng-model="var1" value="1"></input>
<!-- another way, not approved per angular documentation outside of ngRepeat -->
<input ng-model="var2" ng-init="var2=2"></input>
</form>
</div>
JS:
angular.module('myApp', []);
angular.module('myApp')
.controller('MyController', ['$scope', function ($scope) {
console.log("value of var1 is " + $scope.var1);
console.log("value of var2 is " + $scope.var2);
$scope.var1 = 3;
$scope.var2 = 4;
}]);
結果:
value of var1 is undefined
value of var2 is undefined
[setting values to 3 and 4 displays fine in inputs]
因此,似乎控制器代碼已在評估輸入的ng-model參數之前運行。 考慮到控制器比輸入標簽更早宣布,這是有道理的。
題:
有什么方法可以讓控制器邏輯讀取並尊重var1和var2的初始值?
您不能將Angular的ng-model
和常規HTML value
屬性混合使用。
如果要初始化模型,請在控制器中進行(或使用ng-init
但不建議這樣做)。 並從HTML中刪除該value
。
$scope.var1 = 3;
$scope.var2 = 4;
另外,在首次讀取控制器后會評估ng-init
,因此,如果要顯示ng-init
的值,則需要進行$watch
:第一次執行控制器時就不會出現該值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.