Как явно установить текстовое поле в форме для грязного?
Я уже видел такие вопросы, как, Как установить конкретное поле в форме в dirty в angularjs 1.3 и Angular.js, программно устанавливающий поле формы в 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;
дает неопределенный в консоли.
я использовал
$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
Я использую угловой 1.3.1.
2 ответа
В 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
атрибуты используются не названия моделей.
вот ДЕМО
Вы, должно быть, пропустили name
атрибут либо form
или же field
, Ваше имя должно быть address
& имя поля должно быть city
только тогда вы можете получить доступ $scope.address.city.$dirty
в области видимости контроллера или пользовательского интерфейса
наценка
<form name="address">
<input type="text" name="city" ng-model="address.city"
ng-model-options="{ updateOn: 'change blur' }" />
</form>
Это может использовать на HTML как address.city.$dirty
и внутри контроллера это будет $scope.address.city.$dirty
Обновить
В вашем случае название формы address
сфера противоречит вашему address
Вы переопределяете address
переменная области видимости, которая уже содержит объект формы. Поэтому после переопределения все свойство формы стирается. Смотри мой планкр, в котором я воспроизвел твой вопрос именно то, что я там делаю.
<form name="form">
<input type="text" name="city" ng-model="address.city"
ng-model-options="{ updateOn: 'change blur' }" />
</form>
контроллер
$timeout(function () {
$scope.form.city.$dirty = true;
}, 0);