r - 如何在闪亮的应用程序中禁用 modalDialog 的反应性
问题描述
我有一个闪亮的应用程序,其中包含一个模态对话框弹出窗口。我只想在我操作一个动作按钮时才显示信息弹出窗口。我添加了一个reactiveEvent()
但似乎不起作用我不想将 ShinyBS 包用于某些公司约束谢谢你的帮助
应用程序代码:
library(shiny)
ui <- shinyUI(fluidPage(
titlePanel("Example"),
sidebarLayout(
sidebarPanel(
selectInput("decision", label = "Choose your species",
choices = unique(iris$Species),
selected = unique(iris$Species), multiple = TRUE),
actionButton("show", "Show")
),
mainPanel(
uiOutput('mytabs')
)
)
))
server <- shinyServer(function(input, output, session) {
output$mytabs <- renderUI({
nTabs <- length(input$decision)
# create tabPanel with datatable in it
myTabs <- lapply(seq_len(nTabs), function(i) {
tabPanel(paste0("dataset_", input$decision[i]),
tableOutput(paste0("datatable_",i))
)
})
showModal(
modalDialog(
do.call(tabsetPanel, myTabs)
)
)
})
# create datatables in popup ?
observe(
lapply(seq_len(length(input$decision)), function(i) {
output[[paste0("datatable_",i)]] <- renderTable({
as.data.frame(iris[iris$Species == input$decision[i], ])
})
})
)
})
shinyApp(ui, server)
解决方案
我修改了你的服务器代码。mytabs
请注意,由于数据表具有相同的 ID ,因此您不能在模式对话框和模式对话框中显示数据表。
server <- shinyServer(function(input, output, session) {
myTabs <- reactive({
nTabs <- length(input$decision)
# create tabPanel with datatable in it
myTabs <- lapply(seq_len(nTabs), function(i) {
tabPanel(paste0("dataset_", input$decision[i]),
tableOutput(paste0("datatable_",i))
)
})
myTabs
})
# output$mytabs <- renderUI(myTabs())
observeEvent(input$show,{
print(myTabs())
showModal(
modalDialog(
do.call(tabsetPanel, myTabs())
)
)
lapply(seq_len(length(input$decision)), function(i) {
output[[paste0("datatable_",i)]] <- renderTable({
as.data.frame(iris[iris$Species == input$decision[i], ])
})
})
})
})
推荐阅读
- gcc - 如何限制 GCC 中的自动矢量化级别?
- django - Django:AttributeError:类型对象'GroupModel'没有属性'_meta'
- php - 路由“”的参数“”必须匹配“[^/]++”(“”给定)才能生成对应的URL
- python - 获取定义变量的行号
- php - 如何限制 simplexml_load_file() 的结果
- azure - 如何找到 Azure 拉取请求的 threadID?
- php - 在表单上发送值以回显变量 $visible 时出现问题
- python - Strategy pattern in python
- c++ - 有没有一种聪明的方法来实现完全静态的观察者模式(在编译时)
- reactjs - 电子反应还原。更新窗体窗口中的状态不会反映在主窗口中