簡體   English   中英

反應式 DT 數據表中的單選按鈕:刷新后訪問輸入時出現問題

[英]Radio Button in reactive DT datatable: problem accessing input after refreshing

我有一個反應表,需要將其呈現為帶有一些單選按鈕的 DT 數據表。 它類似於此代碼,但帶有反應表。

但是,無論何時重新計算(刷新)表格,輸入都會停止更新新的點擊次數。

library(shiny)
library(DT)
library(dplyr)
library(shinycssloaders)

shinyApp(
  ui = fluidPage(
    title = 'Radio buttons in a table',
    actionButton('refresca', 'Refresh'),
    withSpinner(DT::dataTableOutput('foo')),
    verbatimTextOutput('sel')
  ),
  server = function(input, output, session) {

    m <-
      reactive({

        m <-
          data.table(
            month1 = month.abb,
            A = '1',
            B = '2',
            C = '3',
            QWE = runif(12)
          )

        m %>%
          mutate(across(c('A', 'B', 'C'), \(x) glue('<input type="radio" name="{month1}" value="{x}"/>')))

      }) %>% bindEvent(input$refresca)

    output$foo = DT::renderDataTable(
      {
        m = m()
        print(m)

      }, escape = FALSE, selection = 'none', server = FALSE, rownames=FALSE,
      options = list(dom = 't', paging = FALSE, ordering = FALSE)
      ,callback = JS("table.rows().every(function(i, tab, row) {
                    var $this = $(this.node());
                    $this.attr('id', this.data()[0]);
                    $this.addClass('shiny-input-radiogroup');
  });
                    Shiny.unbindAll(table.table().node());
                    Shiny.bindAll(table.table().node());")
    )

    output$sel = renderPrint({
      str(sapply(month.abb, function(i) input[[i]]))
    })
  }
)

這個問題類似,但是他們的表不是反應性的。 將表放在反應性之外解決了他們的問題,但我不能這樣做。

刷新前必須解綁。 由於刷新是由點擊refresca按鈕觸發的,所以點擊時可以解除綁定; 使用此回調:

      "
      table.rows().every(function(i, tab, row) {
                    var $this = $(this.node());
                    $this.attr('id', this.data()[0]);
                    $this.addClass('shiny-input-radiogroup');
      });
      $('#refresca').on('click', function() {
        Shiny.unbindAll(table.table().node());
      });
      Shiny.unbindAll(table.table().node());
      Shiny.bindAll(table.table().node());
      "

暫無
暫無

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

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