2014-07-21 100 views
1

我想在SignalR上做一個「Opened」和「Closed」。當有人點擊任務按鈕時,它會使用Jquery打開一個新的模式/彈出窗口。當某人打開時,我想顯示「已打開」,然後關閉時,我想顯示「已關閉」。我得到了公開工作,但我似乎無法關閉工作。這是我當前的代碼:在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然後從模態喜歡把它稱爲「模態:onClosed:reservationHasClosed(ID)」

如果沒有,有沒有人知道這樣的有效途徑這個?

感謝

回答

0

我做這個解決了這個問題:

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

再後來我就可以這樣調用:

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

我不喜歡做reservationConnection儘管如此,但如果有人知道更好的方法,請讓我知道。