Shiny Datatables — фокус после загрузки страницы

Поэтому я пытаюсь сделать так, чтобы таблица данных в моем блестящем приложении прокручивалась вверх и фокусировалась на элементе после того, как кто-то нажимает на следующую страницу. Следующий код работает, но проблема в том, что фокус работает всякий раз, когда он нарисован (из-за 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 ), который должен работать, но я не могу правильно понять код. Может кто-нибудь мне помочь?


person KingOfKong    schedule 28.06.2016    source источник
comment
Я использую разрабатываемую версию DT и пробую его примеры, такие как callback = JS('table.page(next).draw(false);') просто не показывает мою таблицу   -  person KingOfKong    schedule 28.06.2016
comment
Если я что-то не понимаю, код JS, который вы дали, ничего не делает. В callback событие table.on("page.dt", function() .... должно происходить только тогда, когда страница изменяется так, как вы хотите, так что, возможно, это поможет.   -  person Carl    schedule 28.06.2016


Ответы (1)


Я не совсем понимаю, какова ваша цель, но я вижу, что вы хотите запускать 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");
      })
      '
    )
    )
  }
)
person Carl    schedule 28.06.2016
comment
Большое спасибо, это сработало. Я думаю, что помещал код обратного вызова в опции, и, может быть, поэтому он не работал? На самом деле я, возможно, также запутался между drawCallback, которая является функцией с данными, и самим обратным вызовом. - person KingOfKong; 28.06.2016