NG-Check запускает свою функцию более одного раза - PullRequest
0 голосов
/ 27 февраля 2019

это код в представлении:

 <input type="radio" name="tabset" id="tab2" aria-controls="rauchbier"
        ng-checked="switch_tabs()">

и это код в контроллере

   $scope.switch_tabs = function(){
        console.log(notification_form_data);
        console.log($('#notification_form').serialize());
        if (notification_form_data != $('#notification_form').serialize() & notification_form_data!= undefined)
        { 
            var alertPopup = $ionicPopup.alert({
            title: 'vs',
            template: 'unsaved data in actions',
            button: 'Done'

        });

    }

предупреждение и console.log происходит 100 раз, когда условие = trueкак стрелять только 1 раз

1 Ответ

0 голосов
/ 27 февраля 2019

Почему проверка ng запускается дважды при загрузке страницы

Проверка ng подразумевается как логическое значение.Таким образом, он должен быть похож на ng-checked="checkbox_checked", и он установит флажок, когда, например, checkbox_checked равен true.

Возможно, вы захотите использовать ng-click, чтобы активировать свою функцию один раз, когда переключательщелкнул.

Или если вы хотите, чтобы что-то происходило при изменении переменной, вы можете использовать $scope.$watch

$scope.$watch('notification_form_data', function() {
   if (notification_form_data != $('#notification_form').serialize() & notification_form_data!= undefined)
    { 
      var alertPopup = $ionicPopup.alert({
      title: 'vs',
      template: 'unsaved data in actions',
      button: 'Done'
     };
})

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

<input type="radio" name="tabset" id="tab2" aria-controls="rauchbier"
        ng-model="radio_checked" 
        ng-changed="switch_tabs()">
$scope.radio_checked = false
$scope.switch_tabs = function(){
        console.log(notification_form_data);
        console.log($('#notification_form').serialize());
        if (notification_form_data != $('#notification_form').serialize() && notification_form_data!= undefined && $scope.radio_checked)
        { 
            var alertPopup = $ionicPopup.alert({
            title: 'vs',
            template: 'unsaved data in actions',
            button: 'Done'

        });

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