2015-10-04 38 views
7

我试图让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消息并显示警报,只有通过返回的视图刷新页面,才能快速删除警报。我仍然不知道如何解决这个问题。

+0

tr重现错误的地方,我们可以看到和调试它。或者如果您的页面处于活动状态,请提供链接 –

+0

“在返回视图结果之前将SignalR消息推送到客户端”<<不返回视图/刷新页面。如果页面刷新,当前页面的JS不能(合理)执行任何操作。听起来像'SingnalR'消息可以包含一个URL(如果它不同于当前的) - 从服务器发送到'toasterNotify'作为第三参数。一旦用户点击模式,他们将转到该URL(我相信 - 基于我在这里阅读的文档:http://bootstrap-notify.remabledesigns.com/)。不要去'#' - 这不会重新加载你的视图 - 使用文档当前位置。 – pherris

+0

我认为你的努力只能通过一个页面应用完成 - 我假设你使用了一个多页面的.NET MVC应用程序,在整个页面被刷新的动作之间。你可以在某种视图中注入JS服务器端,为什么它需要来自'signalR' – Marty

回答

0

我对这个问题的解决方法是在发送消息到数据库之前,在控制器端对消息进行排队,然后让客户端查询消息在每次页面加载时都没有标记为“解除”。因此,用户将在他们访问的每个页面上看到该消息,直到他们点击该消息上的“关闭”按钮,这导致请求被发送到控制器以将该消息标记为“被解雇”。

相关问题