ng-checked不止一次触发其功能

时间:2019-02-27 00:05:01

标签: javascript angularjs

这是视图中的代码:

 <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'

        });

    }

当condition = true时,警报和console.log会发生100次,如何仅触发1次

1 个答案:

答案 0 :(得分:0)

Why is ng-checked firing twice on page load

ng-checked是一个布尔值。因此,它的含义类似于ng-checked="checkbox_checked",例如,当checkbox_checkedtrue时,它将选中该复选框。

单击单选框时,您可能希望使用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中使用的变量是否为true。

<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'

        });

    }