难以使嵌套的 Shiny 模块中的 actionButton 正常工作
Having difficulty getting an actionButton in a nested Shiny module to work
在以下模块化闪亮应用程序中,insertBtn_outer 按钮工作正常,但我正在努力让 insertBtn_inner 按钮工作。非常感谢任何有助于解决我的问题的见解。
library(shiny)
innerUI <- function(id){
ns <- NS(id)
actionButton(ns('insertBtn_inner'), 'Insert')
}
inner <- function(input,output,session){
observeEvent(input$insertBtn_inner, {
showModal(modalDialog(
title = 'Debug message',
paste0('The inner button works'),
easyClose = TRUE,
footer = NULL
))})
}
outerUI <- function(id){
ns <- NS(id)
tagList(
actionButton(ns('insertBtn_outer'), 'Insert'),
br(),
tabsetPanel(id=ns('tabset'), type = 'tabs',
innerUI('inner1')))
}
outer <- function(input,output,session){
callModule(inner,'inner1')
observeEvent(input$insertBtn_outer, {
showModal(modalDialog(
title = 'Debug message',
paste0('The outer button works'),
easyClose = TRUE,
footer = NULL))})
}
ui <- shiny::navbarPage('test_app',
shiny::tabPanel('Tab Panel',
outerUI('test')))
server <- function(input, output) {
callModule(outer,'test')
}
shinyApp(ui = ui, server = server)
在一个tabsetPanel
中,您必须使用一个或多个tabPanel
。另外你必须用ns
调用innerUI
,即innerUI(ns('inner1'))
.
outerUI <- function(id){
ns <- NS(id)
tagList(
actionButton(ns('insertBtn_outer'), 'Insert'),
br(),
tabsetPanel(tabPanel("XXX", innerUI(ns('inner1'))),
id=ns('tabset'), type = 'tabs')
)
}
在以下模块化闪亮应用程序中,insertBtn_outer 按钮工作正常,但我正在努力让 insertBtn_inner 按钮工作。非常感谢任何有助于解决我的问题的见解。
library(shiny)
innerUI <- function(id){
ns <- NS(id)
actionButton(ns('insertBtn_inner'), 'Insert')
}
inner <- function(input,output,session){
observeEvent(input$insertBtn_inner, {
showModal(modalDialog(
title = 'Debug message',
paste0('The inner button works'),
easyClose = TRUE,
footer = NULL
))})
}
outerUI <- function(id){
ns <- NS(id)
tagList(
actionButton(ns('insertBtn_outer'), 'Insert'),
br(),
tabsetPanel(id=ns('tabset'), type = 'tabs',
innerUI('inner1')))
}
outer <- function(input,output,session){
callModule(inner,'inner1')
observeEvent(input$insertBtn_outer, {
showModal(modalDialog(
title = 'Debug message',
paste0('The outer button works'),
easyClose = TRUE,
footer = NULL))})
}
ui <- shiny::navbarPage('test_app',
shiny::tabPanel('Tab Panel',
outerUI('test')))
server <- function(input, output) {
callModule(outer,'test')
}
shinyApp(ui = ui, server = server)
在一个tabsetPanel
中,您必须使用一个或多个tabPanel
。另外你必须用ns
调用innerUI
,即innerUI(ns('inner1'))
.
outerUI <- function(id){
ns <- NS(id)
tagList(
actionButton(ns('insertBtn_outer'), 'Insert'),
br(),
tabsetPanel(tabPanel("XXX", innerUI(ns('inner1'))),
id=ns('tabset'), type = 'tabs')
)
}