javascript - 在 SignalR 上定义 jquery 函数

标签 javascript jquery asp.net-mvc signalr signalr.client

我正在尝试在 SignalR 上执行“打开”和“关闭”操作。当有人单击任务按钮时,它会使用 Jquery 打开一个新的模式/弹出窗口。当有人打开时,我想显示“已打开”,然后当有人关闭时,我想显示“已关闭”。我可以开放工作,但似乎无法封闭工作。这是我当前的代码:

function StartReservationConnection()
{
    var reservationConnection = $.connection.reservationHub

    reservationConnection.client.reservationOpened = function (contractId, username) {
        ToggleReservationStatus(contractId, username, "open");
    }

    reservationConnection.client.reservationClosed = function (contractId)
    {
        ToggleReservationStatus(contractId, null, "close");
    }

    $.connection.hub.start().done(function () {
        $(sections).on('click', '.displayReservationDetails', function () {
            var username = $('#currentUserName').val();
            var contractId = $(this).data("contractid");
            reservationConnection.server.reservationOpened(contractId, username);
        });

        // This does not get called
        function reservationHasClosed(contractId) {
            alert("closed: " + contractId);
        }
    });
}

我知道我可以做一些修改,让它像“在模态关闭时,执行此操作”,但问题是我需要传回contractId,这似乎需要更多工作。

有没有一种方法可以在 signalR 中定义一个函数,例如reservationHasClosed,然后从模态中调用它,例如“Modal:onClosed:reservationHasClosed(id)”

如果没有,有人知道有效的方法吗?

谢谢

最佳答案

我通过这样做解决了这个问题:

var reservationConnection;
function StartReservationConnection()
{
    // Create a new signalR connection
    reservationConnection = $.connection.reservationHub;
    ...

然后我就可以这样调用它:

function reservationHasClosed(contractId) {
    reservationConnection.server.reservationClosed(contractId);
}

我不喜欢像这样使reservationConnection成为全局的,所以如果有人知道更好的方法,请告诉我。

关于javascript - 在 SignalR 上定义 jquery 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24871039/

相关文章:

php - 获取 Flickr 集

javascript - 如何在本地导入Vue/Nuxt.js中的CSS框架?

javascript - 如何在对象的另一个键中使用一个键的值?

asp.net-mvc - 如果 MVC4 中的下拉列表中没有数据和数据可用,如何显示默认消息和选定值

javascript - 如何处理 JavaScript 文件中的本地化?

jQuery 可拖动项目在交换后失去其可拖动性(以 jsfiddle 为例)

jquery - django - 在滚动上加载更多 - 我有分页,我如何加载更多?

.net - 如何设置 WCF 服务和 MVC 站点共享同一个 SSL 证书?

javascript - 从 API MVC C# 填充下拉选项值

javascript - 两个ajax表单不能同时工作