2016-06-28 27 views
1

所以我試圖讓我的閃亮應用中的數據表滾動到頂部,並在有人點擊下一頁後關注元素。下面的代碼工作,但問題是,重點工作,每當它的繪製(因爲drawCallBack的)閃亮的數據表格 - 頁面加載後的焦點

options=list(pageLength=50, drawCallBack = DT::JS(
     'function (paginateScroll) { 
     $("html, body").animate({ 
      scrollTop: 0 
     }, 300); 
     $("th:first-child").focus(); 
     $(".paginate_button").bind("click", paginateScroll); 
     }' 
    )) 

我知道有一個事件稱爲頁面(https://datatables.net/reference/event/page)應該工作,但我似乎無法到得到正確的代碼。誰能幫我嗎?

+0

我使用DT的開發版本,並嘗試他的例子像callback = JS('table.page(「next」)。draw(false);')只是讓我的表沒有出現 – KingOfKong

+0

除非我誤解了某些東西,否則你給的JS代碼不會做任何事情。在'callback'中,事件'table.on(「page.dt」,function()....'應該只在頁面被改變時纔會發生,所以這可能會有所幫助 – Carl

回答

2

我不太明白你的目標是什麼,但我看到你只想在頁面改變時運行JS,而不是在繪製頁面時運行。以下是一些只在頁面更改時才運行的JS。希望這有助於:

library(shiny) 
library(DT) 

shinyApp( 
    ui = fluidPage(
    mainPanel(DT::dataTableOutput("test") 
    ) 
), 
    server = function(input, output,session) {  
    output$test <- DT::renderDataTable({ 
     mtcars 

    }, 
    callback=DT::JS(
     'table.on("page.dt",function() { 
     alert("Page has changed"); 
     }) 
     ' 
    ) 
    ) 
    } 
) 
+0

非常感謝,工作。認爲我將回調代碼放入選項中,也許這就是爲什麼它不起作用?實際上,我可能也會在drawCallback(它是一個數據表函數和回調本身)之間產生混淆 – KingOfKong