2015-10-04 40 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

我對這個問題的解決方法是在發送消息到數據庫之前,在控制器端對消息進行排隊,然後讓客戶端查詢消息在每次頁面加載時都沒有標記爲「解除」。因此,用戶將在他們訪問的每個頁面上看到該消息,直到他們點擊該消息上的「關閉」按鈕,這導致請求被髮送到控制器以將該消息標記爲「被解僱」。

相關問題