[英]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.