我已经看到诸如How to set a particular field in a form to dirty in angularjs 1.3Angular.js programmatically setting a form field to dirty之类的问题,但它们无法正常工作。

我正在自动填充angularjs中的文本框为:

$scope.address.city = "Santa Clara";

$scope.address.city.$dirty = true;

在html中,我有ng-model="address.city" ng-model-options="{ updateOn: 'change blur' }"

但是,$scope.address.city.$dirty = true;在控制台中给出undefined。

我用过了

$http.get("somewebsite.com").success(function(data){ $timeout(function () { $scope.address.city.$dirty = true; }, 0); console.log('$scope.address.city.$dirty',$scope.address.city.$dirty);})

但仍然出现错误,因为TypeError: Cannot set property '$dirty' of undefined

我正在使用angular 1.3.1。

最佳答案

在HTML中

<form name="formName">
    <input type="text" name="city" ng-model="address.city"
    ng-model-options="{ updateOn: 'change blur' }" />
</form>


在控制器中

$timeout(function () {
    $scope.formName.city.$dirty = true;
}, 0);


请注意,使用的是name属性,而不是模型名称。

这是DEMO

09-25 19:16