7

Bootstrap Notify アラートを、ユーザーが閉じるまで表示されたままにし、自動で閉じないようにしようとしています。これを行うには、ドキュメントの理解に従って、設定を にdelay設定し0ます。これは、後に含まれる私のJSファイルですbootstrap-notify.js:

$(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);
};

編集:

関連するコントローラー アクションが、ビューの結果を返す直前に SignalR メッセージをクライアントにプッシュすることがわかりました。そのため、クライアントはすぐに SignalR メッセージを受信して​​アラートを表示しますが、返されたビューによってページが更新されるだけで、アラートはすぐに削除されます。これを回避する方法はまだわかりません。

4

1 に答える 1

0

これに対する私のハックな回避策は、コントローラー側でメッセージを送信する前にDBにエンキューし、ページの読み込みごとに「破棄」としてマークされていないメッセージをクライアントにクエリさせることでした。したがって、ユーザーは、メッセージの「閉じる」ボタンをクリックするまで、アクセスするすべてのページでメッセージを永遠に見ることができます。これにより、Messagingそのメッセージを「破棄」としてマークする要求がコントローラーに送信されます。

于 2015-10-15T11:55:52.770 に答える