2015-10-04 2 views
7

Я пытаюсь получить оповещение по уведомлению Bootstrap, чтобы оставаться видимым до тех пор, пока пользователь не отклонит его, без его автоматического закрытия. Для этого, согласно моему пониманию документации, я установил delay в значение 0. Это мой файл JS, который включен после bootstrap-notify.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); 
}; 

EDIT:

я понял, что со Действие 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

Моим взломанным обходным путем для этого является предоставление очереди сообщения в БД перед отправкой на стороне контроллера, а затем запрос клиента на сообщения, не помеченные как «уволенные» при каждой загрузке страницы. Таким образом, пользователь увидит сообщение на каждой странице, которую они посещают, навсегда, пока не нажмет кнопку «закрыть» в сообщении, что приведет к отправке запроса на контроллер Messaging, чтобы отметить это сообщение как «отклоненное».

Смежные вопросы