我在R中创建了以下的闪亮的应用程序
首先我们导入必要的库
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)
App在运行时,会创建一个滑块和两个选择框,并对用户的输入做出动态反应的输出,当人们将鼠标悬停在滑块上时,工具提示会显示带有读取的气泡。我无法让addpopover函数工作。它的工作原理应该是基于选择2的输入,在弹出式信息框中呈现的文本应该发生变化。该应用程序正在崩溃。当我把addpopover命令放在一个反应式环境中,我是renderUI函数的输出--即文本框消失。我请求有人在这里帮助我。
你可以将 addPopover
在 observe
或 observeEvent
. 我宁愿 observeEvent
按建议 此处.
addPopover
每次都会更新 content()
的变化,这正是我们想要的,因为这个弹出式菜单应该是显示 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)