簡體   English   中英

訪問socket.io回調函數之外的變量

[英]Accessing a variable outside of a socket.io callback function

我對Javascript,Node.js或Socket.io沒有太多的經驗。 我正在嘗試使用jQuery分頁插件http://beneverard.github.com/jqPagination/創建一個應用程序,該程序查詢mysql數據庫(使用用戶在文本框中輸入的關鍵字),獲取結果總數返回以及第一頁的前15個結果(使用LIMIT),然后使用結果總數來確定需要多少頁。

這是我無法使用的代碼段(用於設置分頁的最大頁面數的客戶端javascript):

var maxpagenumber;

socket.on('resultsnumber', function(count)
{
    maxpagenumber = ~ ~(this.count / 15) + 1;
});

$('.pagination').jqPagination({
    max_page: maxpagenumber,
    paged: function(page)
    {
        ...
    }
});

我在Chrome中查看了變量maxpagenumber,發現它是未定義的。 前15個結果的查詢有效,只是分頁僅顯示一個最大頁面。

當我在網上四處尋找幫助時,我發現了一個有關在異步回調函數外部訪問變量的問題: 在ajax回調函數外部使用變量 我使用標記答案中的想法,並將其應用於我的代碼:

var setPagination = function(maxpagenum)
{
    $('.pagination').jqPagination({
        max_page: maxpagenum,
        paged: function(page)
        {
            ...
        }
    });
}

socket.on('databasenumber', function(count)
{
    var maxpagenumber = ~ ~(this.count / 15) + 1;
    setPagination(maxpagenumber);
});

這給出的結果與先前的代碼段相同。 到目前為止,我唯一可行的選擇是:

socket.on('databasenumber', function(count)
{
    var maxpagenumber = ~ ~(this.count / 15) + 1;
    $('.pagination').jqPagination({
        max_page: maxpagenumber,
        paged: function(page)
        {
            ...
        }
    });
});

直到用戶在文本框中輸入新的關鍵字以再次搜索之前,此方法均能完美運行。 一旦用戶進行第二次搜索,就會出現許多錯誤。 有人對如何進行這項工作有任何想法嗎? 我應該顯示更多代碼來解釋我的問題嗎? 也許我只是不正確理解這個Java代碼片段? 任何幫助或建議,將不勝感激。

問題似乎是您只設置了一次maxpagenumber。 您確實需要在每次數據集更改時進行設置。 我認為重做第二組的某種組合是最好的,但是我對jqPagination控件不是100%熟悉,因此可能無法解決問題。 您可能需要通過一些API調用為其提供新的maxPageNum?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM