Использование addPopover в модулях - PullRequest
1 голос
/ 30 сентября 2019

Я пытаюсь использовать addPopover из shinyBS и не могу заставить его работать в модуле. Всплывающая подсказка прекрасно работает в модуле, но всплывающее окно не отображается. Кроме того, всплывающая подсказка и всплывающая подсказка работают нормально, если размещены непосредственно в главном разделе server. Протестировано с shiny_1.3.2 и shinyBS_0.61 на R 3.6.1 и RStudio 1.2.1568.

library(shiny)
library(shinyBS)

counterButton <- function(id, label = "Counter") {
  ns <- NS(id)
  tagList(
     actionButton(ns("button"), label = label),
     bsTooltip(id = ns("button"), title = "Info about the button"),
     verbatimTextOutput(ns("out"))
  )
}

counter <- function(input, output, session) {

  count <- reactiveVal(0)
  observeEvent(input$button, {
    count(count() + 1)
  })

  output$out <- renderText({
    count()
  })

  addPopover(session, 
             id = "out", 
             title = "Info", 
             content = "More info about the counter field", 
             trigger = "hover")
  count
}

ui <- fluidPage(
  counterButton("counter1", "Counter #1")
)

server <- function(input, output, session) {
  callModule(counter, "counter1")
}

shinyApp(ui, server)

1 Ответ

1 голос
/ 30 сентября 2019

Вы должны использовать session$ns:

counter <- function(input, output, session) {

  ns <- session$ns

  count <- reactiveVal(0)
  observeEvent(input$button, {
    count(count() + 1)
  })

  output$out <- renderText({
    count()
  })

  addPopover(session, 
             id = ns("out"), 
             title = "Info", 
             content = "More info about the counter field", 
             trigger = "hover")
  #count # what's that?
}
...