ng-change изначально не работает при загрузке страницы, но после обновления страницы работает нормально

Вот код, с которым я столкнулся:

<input type="text" data-ng-model="TODATE" data-ng-change="setTdate()" name="date" class="form-control datepicker" id="todate"  data-date-container="#cal"  data-provide="datepicker" data-date-format="mm-dd-yyyy" placeholder="mm-dd-yyyy"   /> 

код в контроллере:

$scope.setTdate = setTdate;
    function setTdate() 
   { 
     alert("working"); 
   }

Я использую тип ввода как текст для начальной загрузки и хочу вызвать функцию при выборе даты. Событие ng-change не работает, когда страница загружается изначально, но когда я обновляю страницу, она работает нормально. При отладке нет предупреждений или ошибок.


person anupriya gupta    schedule 03.07.2018    source источник
comment
Я не вижу объявления для ng-change в вашем коде, оно добавляется динамически? Если да, можете ли вы добавить код, где это делается? Если нет, то где вы ожидаете срабатывания ng-change?   -  person Kaddath    schedule 03.07.2018
comment
@kaddath Я отредактировал код, пожалуйста, просмотрите   -  person anupriya gupta    schedule 03.07.2018
comment
@anupriyagupta было бы лучше, если бы вы произвели выщипывание   -  person Prashant Pimpale    schedule 03.07.2018
comment
@prashantPimpale создал этот плункер, посмотрите plnkr.co/edit/MZCciHSyfPVnfiQpzRDZ?p=preview   -  person anupriya gupta    schedule 03.07.2018
comment
Взгляните на: stackoverflow.com/a/35178790/7124761   -  person Prashant Pimpale    schedule 03.07.2018
comment
@prashantPimpale не работает над изменением даты ... кажется, что выбранная дата не обновляется в области $, как если бы я изменил ng-change на ng-click, он отлично работает, когда я нажимаю на текстовое поле.   -  person anupriya gupta    schedule 03.07.2018


Ответы (1)


Взглянуть. Я думаю, что он работает нормально, не обновляя страницу.

<!DOCTYPE html>
<html>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.9/angular.min.js"></script>
<body ng-app="myApp">
<div ng-controller="myCtrl">
  <input type="date" ng-change="myFunc()" ng-model="myValue" />
  <p>ng-change triggered {{count}} times.</p>
</div>

<script>
  angular.module('myApp', [])
    .controller('myCtrl', ['$scope', function($scope) {
      $scope.count = 0;
      $scope.myFunc = function() {
        $scope.count++;
      };
    }]);
</script>
</body>
</html>

person Adesh Kumar    schedule 03.07.2018
comment
спасибо .. но я пытаюсь вызвать ng-change при выборе даты из ui-datepicker. - person anupriya gupta; 03.07.2018
comment
я обновил его для типа = дата, вы можете проверить это, и вы должны указать, спрашивая - person Adesh Kumar; 03.07.2018
comment
тип даты работает нормально, но поскольку это элемент управления HTML5, он не работает в IE, поэтому тип выбирается как текст, и используется средство выбора даты начальной загрузки. - person anupriya gupta; 03.07.2018
comment
я понимаю. Во-первых, неправильное объявление функции $scope.abc=function(){ } not $scope.abc=function abc(){ } - person Adesh Kumar; 03.07.2018
comment
вторая после выбора значения даты ng-change будет работать, если вы измените длину строки в поле ввода - person Adesh Kumar; 03.07.2018
comment
пожалуйста, попробуйте изменить или удалить последнюю цифру, например, 8 из 2018 года, и функция будет работать - person Adesh Kumar; 03.07.2018
comment
и для лучшего результата вы также можете использовать ng-focus - person Adesh Kumar; 03.07.2018
comment
надеюсь, это поможет @anupriya - person Adesh Kumar; 03.07.2018
comment
внес изменения, и это работает, но я хочу, чтобы это было при выборе новой даты - person anupriya gupta; 03.07.2018