当需要INPUT时$ scope属性未定义'

时间:2014-11-29 04:18:02

标签: javascript angularjs

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

http://jsfiddle.net/3h8o1yrz/

1 个答案:

答案 0 :(得分:2)

在AngularJS中,如果输入有验证,默认情况下ng-change将不会被触发,除非所有验证都通过。

但是,您可以通过ng-model-optionshttps://docs.angularjs.org/api/ng/directive/ngModelOptions)更改此行为。

试试这个:

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