Javascript 输入为'时,$scope属性未定义;必需的';

Javascript 输入为'时,$scope属性未定义;必需的';,javascript,angularjs,Javascript,Angularjs,在2个输入字段的基本示例中,我正在模糊上更新模型。这两个字段之间的区别是一个字段具有required属性,而另一个字段不具有该属性 我正在监视模型的更改,并转储$scope.user属性。我注意到,当不需要该字段时,我将值从任何字符串更改回空字符串,并且模型更新为空。但是,必填字段更新为未定义 我在文档中没有看到任何会导致这种情况的特殊内容。有人能解释一下吗 <div ng-app="app" ng-controller="Ctrl"> <input name="nam

在2个
输入
字段的基本示例中,我正在
模糊
上更新模型。这两个字段之间的区别是一个字段具有
required
属性,而另一个字段不具有该属性

我正在监视模型的更改,并转储
$scope.user
属性。我注意到,当不需要该字段时,我将值从任何字符串更改回空字符串,并且模型更新为空。但是,必填字段更新为
未定义

我在文档中没有看到任何会导致这种情况的特殊内容。有人能解释一下吗

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

var-app=angular.module(“app”,[]);
应用程序控制器(“Ctrl”、[“$scope”、函数($scope){
$scope.user={
名称1:“”,
姓名2:“
};
$scope.$watchGroup([“user.name1”,“user.name2”],函数(值){
log($scope.user);
});
}]);


在AngularJS中,如果输入上有验证,默认情况下,除非通过所有验证,否则不会触发
ng change

但是,您可以通过
ng model options
()更改此行为

试试这个:

<input name="name" ng-model="user.name2" ng-model-options="{updateOn: 'blur', allowInvalid: true}" required />

Ahh,是的。正是我想要的。谢谢