Нажмите на флажок, не обновляя свойство $ pristine формы - PullRequest
3 голосов
/ 10 июля 2019

$ нетронутое свойство формы не обновляется при первом обновлении скрытого текста AngularJS

У меня есть форма в AngularJS, и я хочу знать, обновляется ли какое-либо поле формы.

при обновлении флажка соответствующее свойство $pristine не обновляется.

Поэтому я добавил скрытое текстовое поле, которое привязано к тому же ng-model флажка.

Но он не работает в первый раз и работает во второй раз.

Код HTML ниже -

<html>
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.2.6/angular.js"></script>
<script src="http://angular-ui.github.io/bootstrap/ui-bootstrap-tpls-0.9.0.js"></script>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script src="script.js"></script>

<body ng-app="formApp" ng-controller="formController">
  <div>
    <form name="myForm">
      <label>Personal Question</label>
      <div class="checkbox">
        <label>
          <input type="checkbox" name="awesome" ng-model="formData.awesome" 
                 ng-true-value="ofCourse" ng-false-value="iWish" 
                 ng-click="onClick()"> Are you awesome?
          <input type="text" name="hidden-awesome" ng-model="formData.awesome"
                 ng-hide="true"/>
        </label>
      </div>
    </form>
  </div>
</body>
</html>

А код AngularJS ниже -

var formApp = angular.module('formApp', [])
.controller('formController', function($scope) {
  $scope.onClick = function() {
    alert('is myform is not modified? '+ $scope.myForm.$pristine);
    console.log(JSON.stringify($scope.myForm))
  };
});

У меня есть мой код в здесь: .

Как мне справиться с этой ситуацией?

1 Ответ

3 голосов
/ 10 июля 2019

Используйте директиву ng-change вместо ng-click:

  <input type="checkbox" name="awesome" ng-model="formData.awesome" 
         ng-true-value="ofCourse" ng-false-value="iWish" 
         ̶n̶g̶-̶c̶l̶i̶c̶k̶=̶"̶o̶n̶C̶l̶i̶c̶k̶(̶)̶"̶
         ng-change="onClick()" > Are you awesome?

Директива ng-change добавляет $ viewChangeListener , который вызывается после пользователь управляет элементом управления.

Директива ng-click добавляет обработчик щелчка, который вызывается до того, как ngModelController обновит модель.

Примечание: Флажки могут быть сфокусированы с помощью клавиши tab и работать с клавишей enter , а также с помощью щелчка мышью.

Для получения дополнительной информациисм.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...