在2个input
字段的基本示例中,我正在blur
更新模型。两个字段之间的差异是一个具有required
属性而另一个没有。
我正在观看模型的更改并转出$scope.user
属性。我注意到,当不需要该字段时,我将任何字符串中的值更改回空字符串,模型更新为空。但是,必填字段更新为undefined
。
我没有在文档中看到任何可能导致此问题的内容。任何人都能解释一下吗?
<div ng-app="app" ng-controller="Ctrl">
<input name="name" ng-model="user.name1" ng-model-options="{updateOn: 'blur'}" />
<input name="name" ng-model="user.name2" ng-model-options="{updateOn: 'blur'}" required />
</div>
<script>
var app = angular.module("app", []);
app.controller("Ctrl", ["$scope", function ($scope) {
$scope.user = {
name1: "",
name2: ""
};
$scope.$watchGroup(["user.name1", "user.name2"], function (value) {
console.log($scope.user);
});
}]);
</script>
答案 0 :(得分:2)
在AngularJS中,如果输入有验证,默认情况下ng-change
将不会被触发,除非所有验证都通过。
但是,您可以通过ng-model-options
(https://docs.angularjs.org/api/ng/directive/ngModelOptions)更改此行为。
试试这个:
<input name="name" ng-model="user.name2" ng-model-options="{updateOn: 'blur', allowInvalid: true}" required />