这是视图中的代码:
<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次
答案 0 :(得分:0)
Why is ng-checked firing twice on page load
ng-checked是一个布尔值。因此,它的含义类似于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
中使用的变量是否为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'
});
}