我正在使用Toastr 2.1
JavaScript库来显示瞬态用户输入验证错误消息。我将preventDuplicates
选项设置为true。它不起作用 - 当用户快速连续点击验证按钮时,我仍然会看到重复的消息(点击速度超过'超时')。
以下是我的toastr默认值:
function getDefaults() {
return {
tapToDismiss: true,
toastClass: 'toast',
containerId: 'toast-container',
debug: false,
showMethod: 'fadeIn', //fadeIn, slideDown, and show are built into jQuery
showDuration: 300,
showEasing: 'swing', //swing and linear are built into jQuery
onShown: undefined,
hideMethod: 'fadeOut',
hideDuration: 1000,
hideEasing: 'swing',
onHidden: undefined,
extendedTimeOut: 1000,
iconClasses: {
error: 'toast-error',
info: 'toast-info',
success: 'toast-success',
warning: 'toast-warning'
},
iconClass: 'toast-info',
positionClass: 'toast-top-right',
timeOut: 5000, // Set timeOut and extendedTimeOut to 0 to make it sticky
titleClass: 'toast-title',
messageClass: 'toast-message',
target: 'body',
closeHtml: '<button>×</button>',
newestOnTop: true,
preventDuplicates: true,
progressBar: false
};
}
我是否需要进行任何其他更改以防止重复的错误消息?
答案 0 :(得分:6)
这可能会有所帮助
toastr.options = {
"preventDuplicates": true,
"preventOpenDuplicates": true
};
toastr.error("Your Message","Your Title",{timeOut: 5000});
答案 1 :(得分:2)
我遇到了同样的问题,结果发现toastr preventDuplicates选项不适用于数组消息(当前版本2.1.1)。您需要使用join将数组转换为字符串。
答案 2 :(得分:2)
我相信它按预期工作
preventDuplicates: Prevent duplicates of the **last toast**.
也许这是您正在寻找的财产?
preventOpenDuplicates: Prevent duplicates of open toasts.
答案 3 :(得分:1)
我和你有同样的要求。以下是我的实施。看看它是否可以帮到你。
function hasSameErrorToastr(message){
var hasSameErrorToastr = false;
var $toastContainer = $('#toast-container');
if ($toastContainer.length > 0) {
var $errorToastr = $toastContainer.find('.toast-error');
if ($errorToastr.length > 0) {
var currentText = $errorToastr.find('.toast-message').text();
var areEqual = message.toUpperCase() === currentText.toUpperCase();
if (areEqual) {
hasSameErrorToastr = true;
}
}
}
return hasSameErrorToastr;
}
//Usage
var message = 'Error deleting user';
if (hasSameErrorToastr(message)) {
toastr.error(message, title, errorToastrOptions);
}
&#13;
代码是检查是否存在显示相同消息的现有错误toastr。如果显示中没有相同错误的现有实例,我将仅触发toastr.error。希望这可以帮助。代码可以进一步重构,但我会留下这样的代码,以便更容易理解其他代码。
答案 4 :(得分:0)
这可能会有所帮助。
var config = {
maxOpened: 1,
timeOut: 100
}
将它放在你的toastr config中。它应该work.opened toastr为1,超时设置为100。
答案 5 :(得分:0)
将preventDuplicates:1添加到
toastr.options = { maxOpened:1 preventDuplicates:1, };
答案 6 :(得分:0)
我遇到了相同的问题 ngx-toastr ,并通过在模块文件中添加以下代码来解决。
ToastrModule.forRoot({
maxOpened: 1,
preventDuplicates: true,
autoDismiss: true
})
此外,如果实现了延迟加载,那么您还需要将相同的代码行添加到您的父模块文件中,就像我在app.module.ts中添加的一样。