Bootstrap即使延迟设置为0也会自动关闭
问题描述:
我试图让Bootstrap Notify提醒保持可见状态,直到用户将其解除为止,并且没有自动关闭。为此,根据我对文档的理解,我将delay
设置为0
。这是bootstrap-notify.js
后,包括我的JS文件:Bootstrap即使延迟设置为0也会自动关闭
$(function() {
var alertTemplate = $("#notify-template").html();
$.notifyDefaults({ target: "_self" }, { type: "warning", delay: 0, template: alertTemplate });
});
var toasterNotify = function (alertTitle, alertMessage, alertUrl) {
alertUrl = alertUrl || "#";
$.notify({ title: alertTitle, message: alertMessage, url: alertUrl }, { delay: 0 });
}
工程完全按照预期这toasterNotify
功能时,我直接从click
事件调用它在视图按钮,但是当它从一个SignalR回调称为从服务器,如下面的警报几乎瞬间就出现它关闭:
var hubProxy = $.connection.applicationHub;
hubProxy.client.alertNewClaim = function (model) {
toasterNotify(model.SourceFullName, model.Message);
};
编辑:
我已经想通了,合作ntroller动作在返回视图结果之前将SignalR消息推送给客户端。因此,客户端立即收到SignalR消息并显示警报,只有通过返回的视图刷新页面,才能快速删除警报。我仍然不知道如何解决这个问题。
答
我对这个问题的解决方法是在发送消息到数据库之前,在控制器端对消息进行排队,然后让客户端查询消息在每次页面加载时都没有标记为“解除”。因此,用户将在他们访问的每个页面上看到该消息,直到他们点击该消息上的“关闭”按钮,这导致请求被发送到控制器以将该消息标记为“被解雇”。
tr重现错误的地方,我们可以看到和调试它。或者如果您的页面处于活动状态,请提供链接 –
“在返回视图结果之前将SignalR消息推送到客户端” pherris
我认为你的努力只能通过一个页面应用完成 - 我假设你使用了一个多页面的.NET MVC应用程序,在整个页面被刷新的动作之间。你可以在某种视图中注入JS服务器端,为什么它需要来自'signalR' – Marty