DT在RS​​hiny内重新加载

时间:2015-09-01 09:02:54

标签: r shiny dt

在闪亮的内容中,如何更新DT表中的值,而不重新绘制整个表,从而在每次更新时闪烁。

以下示例将标准tableOutput与DT :: dataTableOutput进行比较。 请注意dataTableOutput每次更新时的闪烁。 有没有避免这种情况并且用户互动更顺畅? ui.R和server.R示例如下。

require(shiny);require(DT)
shinyUI(fluidPage(
  titlePanel("Sliders"),

  sidebarLayout(
    sidebarPanel(
      sliderInput(
        "integer", "Integer:",
        min = 0, max = 1000, value = 500
      ),

      sliderInput(
        "decimal", "Decimal:",
        min = 0, max = 1, value = 0.5, step = 0.1
      ),

      sliderInput(
        "range", "Range:",
        min = 1, max = 1000, value = c(200,500)
      ),

      sliderInput(
        "format", "Custom Format:",
        min = 0, max = 10000, value = 0, step = 2500,
        pre = "$", sep = ",", animate = TRUE
      ),

      sliderInput(
        "animation", "Looping Animation:", 1, 2000, 1,
        step = 10, animate =
          animationOptions(
            interval = 300, loop = TRUE,
            playButton = "PLAY", pauseButton = "PAUSE"
          )
      )
    ),

    mainPanel(tableOutput("values"),
              DT::dataTableOutput('DTtable'))
  )
))


shinyServer(function(input, output) {
  sliderValues <- reactive({
    data.frame(
      Name = c("Integer",
               "Decimal",
               "Range",
               "Custom Format",
               "Animation"),
      Value = as.character(
        c(
          input$integer,
          input$decimal,
          paste(input$range, collapse = ' '),
          input$format,
          input$animation
        )
      ),
      stringsAsFactors = FALSE
    )
  })

  output$values <- renderTable({
    sliderValues()
  })
  output$DTtable = DT::renderDataTable(rownames = FALSE,
                                       {
                                         sliderValues()
                                       },
                                       options = list(processing = FALSE))
})

看起来理想的解决方案是实现重新加载功能: https://datatables.net/reference/api/ajax.reload()

有关如何执行此操作的建议吗?

0 个答案:

没有答案