我的问题涉及到观察ShiningBS中bsCollapsePanel中标题的切换和取消切换事件。
让我们以以下应用为例:
library(shiny)
library(shinyBS)
server = function(input, output, session) {
observeEvent(input$p1Button, ({
updateCollapse(session, "collapseExample", open = "Panel 1")
}))
observeEvent(input$styleSelect, ({
updateCollapse(session, "collapseExample", style = list("Panel 1" = input$styleSelect))
}))
output$randomNumber <- reactive(paste0('some random number'))
}
ui = fluidPage(
sidebarLayout(
sidebarPanel(HTML("This button will open Panel 1 using <code>updateCollapse</code>."),
actionButton("p1Button", "Push Me!"),
selectInput("styleSelect", "Select style for Panel 1",
c("default", "primary", "danger", "warning", "info", "success"))
),
mainPanel(
bsCollapse(id = "collapseExample", open = "Panel 2",
bsCollapsePanel("Panel 1", "This is a panel with just text ",
"and has the default style. You can change the style in ",
"the sidebar.", style = "info")
),
verbatimTextOutput('randomNumber')
)
)
)
app = shinyApp(ui = ui, server = server)
我希望应用程序每次单击
verbatimTextOutput('randomNumber')
标头打开bsCollapsePanel
时,都能够在Panel 1
字段中打印随机数(使用R闪亮反应性)。我当时想使用
shinyjs
包可能是可行的,但还没有找到将这两个包一起使用的许多示例。 最佳答案
我不确定您想要什么,但这可能已经很接近了。这些是附加功能:
添加了一个observeEvent
来监视您的Panel 1
标头。
添加了reactiveValues
来保存“随机数”
按下observeEvent
时,在上述Panel 1
处理程序中增加该值。
这是代码:
library(shiny)
library(shinyBS)
server = function(input, output, session) {
rv <- reactiveValues(number=0)
observeEvent(input$p1Button, ({
updateCollapse(session, "collapseExample", open = "Panel 1")
}))
observeEvent(input$styleSelect, ({
updateCollapse(session, "collapseExample", style = list("Panel 1" = input$styleSelect))
}))
observeEvent(input$collapseExample, ({
rv$number <- rv$number+1
}))
output$randomNumber <- reactive(rv$number)
}
ui = fluidPage(
sidebarLayout(
sidebarPanel(HTML("This button will open Panel 1 using <code>updateCollapse</code>."),
actionButton("p1Button", "Push Me!"),
selectInput("styleSelect", "Select style for Panel 1",
c("default", "primary", "danger", "warning", "info", "success"))
),
mainPanel(
bsCollapse(id = "collapseExample", open = "Panel 2",
bsCollapsePanel("Panel 1", "This is a panel with just text ",
"and has the default style. You can change the style in ",
"the sidebar.", style = "info")
),
verbatimTextOutput('randomNumber')
)
)
)
shinyApp(ui = ui, server = server)
屏幕截图: