[英]shiny addpopover function doesnt work with uioutput
我在 R 中创建了以下 shiny 应用程序
首先我们导入必要的库
library(shiny)
library(shinyBS)
下一步是创建一个 UI,如下所示
ui = fluidPage( sidebarLayout( sidebarPanel(sliderInput("bins", "Number of bins:", min = 1, max =
50,value = 30), selectInput(inputId = "Select1", label = "Select1", choices = c('A', 'B', 'C'),
selected = "A"), selectInput(inputId = "Select2", label = "Select2", choices = c('A1', 'B1', 'C1'),
selected = "A1"), bsTooltip("bins", "Read", "right", options = list(container = "body")) ),
mainPanel(uiOutput("namelist") ) ))
我们现在如下创建服务器
server =function(input, output, session) {
content<-reactive({
input$Select2
})
output$namelist<-renderUI({
textInput(inputId = "text1", label =input$Select1)
})
addPopover(session, "namelist", "Data", content =content() , trigger = 'click') }
shinyApp(ui, server)
正在运行的应用程序将创建一个 slider 和两个 select 框和一个动态响应用户输入的 output。 当将鼠标悬停在 slider 上时,工具提示会显示带有读取的气泡。 我无法让 addpopover function 工作。 它应该可以根据 select 2 的输入工作,弹出消息框中呈现的文本应该发生变化。 应用程序崩溃。 当我将 addpopover 命令放在反应式环境中时,我就是 renderUI 函数的输出——即文本框消失了。 我请求有人在这里帮助我。
您可以将addPopover
包装在observe
或observeEvent
中。 我更喜欢observeEvent
,正如这里推荐的那样。
addPopover
将在每次content()
更改时更新,这是我们想要的,因为这个 popover 应该显示content()
。 但是,此弹出框的行为有些奇怪(点击有时无效),但我想这与您的应用程序无关。
library(shiny)
library(shinyBS)
ui = fluidPage(sidebarLayout(
sidebarPanel(
sliderInput(
"bins",
"Number of bins:",
min = 1,
max =
50,
value = 30
),
selectInput(
inputId = "Select1",
label = "Select1",
choices = c('A', 'B', 'C'),
selected = "A"
),
selectInput(
inputId = "Select2",
label = "Select2",
choices = c('A1', 'B1', 'C1'),
selected = "A1"
),
bsTooltip("bins", "Read", "right", options = list(container = "body"))
),
mainPanel(uiOutput("namelist"))
))
server =function(input, output, session) {
content<-reactive({
input$Select2
})
output$namelist<-renderUI({
textInput(inputId = "text1", label = input$Select1)
})
observeEvent(content(), {
addPopover(session, "namelist", "Data", content = content() , trigger = 'click')
})
}
shinyApp(ui, server)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.