блестящая функция addpopover не работает с uioutput - PullRequest
0 голосов
/ 07 мая 2020

Я создал следующее блестящее приложение на R

Сначала мы импортируем необходимые библиотеки

 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)

   }) 

 addPopover(session, "namelist", "Data", content =content() , trigger = 'click')  }

 shinyApp(ui, server)

Приложение при запуске создаст ползунок и два поля выбора и вывод, который динамически реагирует на ввод пользователя. всплывающая подсказка отображает пузырек с прочитанным при наведении курсора на ползунок. Я не могу заставить работать функцию addpopover. Он должен работать так, чтобы на основе ввода select 2 текст, отображаемый в окне всплывающего сообщения, должен изменяться. Приложение дает сбой. Когда я помещаю команду addpopover в реактивную среду, я получаю результат функции renderUI, а именно текстовое поле исчезает. Прошу кого-нибудь помочь мне здесь.

1 Ответ

1 голос
/ 07 мая 2020

Вы можете заключить 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...