闪亮的addpopover函数不能与uioutput一起工作。

问题描述 投票:0回答:1

我在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函数的输出--即文本框消失。我请求有人在这里帮助我。

r shiny tooltip popover
1个回答
1
投票

你可以将 addPopoverobserveobserveEvent. 我宁愿 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)
© www.soinside.com 2019 - 2024. All rights reserved.