【发布时间】:2014-04-28 18:54:34
【问题描述】:
我知道双击/多次单击 angularJS 的解决方案,在使用 ng-disabled 完成 ajax 处理后禁用按钮单击并启用它。请提出任何其他最佳解决方案来处理 angularJS 中的双击...
我们的代码将在按钮单击时调用 ajax 方法,并且会花费少量时间来处理和从数据库获取数据。我们必须限制第二次/多次点击意味着同时。
我不想在 ajax 进行时允许点击...
欢迎使用简单的解决方案而不是使用 ng-disabled,我是 AngularJS 的学习者
createDialogService('ajs/common/templates/popup/config_reminder_popup.html', { 标题:是从, 背景:真实, 控制器:'configRemindersCBController', footerTemplate: '' + 动作 + '' });
$scope.saveOrUpdateReminder = function (reminder)
{
if ($scope.isDisabled)
{
return;
}
$scope.isDisabled = true;
if (!reminder.daysBeforeAfterCheckDate || reminder.daysBeforeAfterCheckDate === '')
{
alertService.openValidatPopup('Please enter days before expiration.', "Error", true, 'configRemindersCBController', 'Ok', 'u1_remove.png');
$scope.isDisabled = false;
return;
}
configRemindersService.isDaysBeforeAfterCheckDate($scope.objectId, reminder, function (result)
{
if (!reminder.selectedMessageTemplate.messageId || reminder.selectedMessageTemplate.messageId === '')
{
alertService.openValidatPopup('Please select message template.', "Error", true, 'configRemindersCBController', 'Ok', 'u1_remove.png');
$scope.isDisabled = false;
return;
}
else if (!reminder.selectedReminderSendOption.reminderSendOptionValue || reminder.selectedReminderSendOption.reminderSendOptionValue === '')
{
alertService.openValidatPopup('Please select reminder send option.', "Error", true, 'configRemindersCBController', 'Ok', 'u1_remove.png');
$scope.isDisabled = false;
return;
}
var enableReminder;
if (result.Result === 'No')
{
if (reminder.enable === true)
{
enableReminder = 'Enable';
}
else
{
enableReminder = 'Disable';
}
configRemindersService.addOrUpdateReminderConfigLine($scope.objectId, reminder, enableReminder, function (remindersResponse)
{
var reminder = remindersResponse.reminderConfigLine;
$rootScope.CONFIG = JSON.parse(remindersResponse.configData);
$scope.$modalClose();
$scope.isDisabled = false;
_.filter(configRemindersService.getMessageTemplates(), function (msg)
{
if (reminder.messageTemplateId === msg.messageId)
{
reminder.selectedMessageTemplate = msg;
}
});
_.filter(configRemindersService.getReminderSendOptions(), function (option)
{
if (reminder.reminderSendOption === option.reminderSendOptionValue)
{
reminder.selectedReminderSendOption = option;
}
});
if (configRemindersService.getIsFrom() === 'Create Reminder')
{
configRemindersService.getReminders().push(reminder);
}
else
{
configRemindersService.getReminders()[configRemindersService.getIndex()] = reminder;
}
});
}
});
};
【问题讨论】:
-
为什么不想使用 ng-disabled?这几乎就是 ng-disabled 的目的,在特定条件下禁用按钮。
-
我在上面添加了代码,请检查 Casao
-
如果您设置为不使用 ngDisabled,请将状态管理移至 configRemindersService - 这样您只需确保那里的代码正确处理设置变量。
-
欢迎使用指令的方式,如果我们在按钮中添加指令,它应该不允许多次点击
标签: javascript ajax angularjs