R语言 闪亮弹出窗口不会出现在不同的选项卡下

tf7tbtn2  于 2023-03-15  发布在  其他
关注(0)|答案(1)|浏览(163)

当我为我的闪亮应用创建一个标签时,我发现我不能重现我的点击弹出窗口来生成一个直方图。但是,当我不包括标签时,这个工作成功。
例如,非工作实现:

library(shiny)
library(shinyBS)

ui =fluidPage(
  navbarPage(id="navid",collapsible = TRUE,
             position = "static-top",
             fluid = TRUE,
             windowTitle = "Test",
             theme=bslib::bs_theme(bootswatch="flatly"),
             "Some Test"),
  tabPanel('Hist',
           fluidPage(
    sidebarLayout(
      sidebarPanel(numericInput("n", "n", 50),
                   actionButton("go", "Go")),
      mainPanel(
        bsModal("modalExample", "Your plot", "go", size = "large",plotOutput("plot"))
      )
    ))))

server =
  function(input, output, session) {
    randomVals <- eventReactive(input$go, {
      runif(input$n)
    })
    plotInput <- function(){hist(randomVals())}
    output$plot <- renderPlot({
      hist(randomVals())
    })
    
  }
shinyApp(ui, server)

而工作实现具有以下ui实现:

ui =
  fluidPage(
    sidebarLayout(
      sidebarPanel(numericInput("n", "n", 50),
                   actionButton("go", "Go")),
      mainPanel(
        bsModal("modalExample", "Your plot", "go", size = "large",plotOutput("plot"))
      )
    )
  )
b1uwtaje

b1uwtaje1#

首先,我确信你的UI在更复杂的场景中设计得不好(比如元素嵌套),比如tabPanel必须在navbarPage里面。
当您的两个UI与bootstrap 5一起使用时,它们都停止工作。在您的情况下,只有更复杂的UI与bootstrap 5一起使用,bslib::bs_theme(bootswatch="flatly")
我认为问题可能来自于不同引导版本中更改的data-* 属性。这是shinyBS方面的问题。
这里的工作示例与引导版本4和更新的用户界面。

library(shiny)
library(shinyBS)

ui <- fluidPage(
  navbarPage(
    id = "navid", collapsible = TRUE,
    position = "static-top",
    fluid = TRUE,
    windowTitle = "Test",
    theme = bslib::bs_theme(version = "4", bootswatch="flatly"), # Please test with bootstrap 3, 4 and 5
    "Some Test",
    tabPanel(
      "Hist",
      sidebarLayout(
        sidebarPanel(
          numericInput("n", "n", 50),
          actionButton("go", "Go")
        ),
        mainPanel(
          bsModal("modalExample", "Your plot", "go", size = "large", plotOutput("plot"))
        )
      )
    )
  )
)

server <-
  function(input, output, session) {
    randomVals <- eventReactive(input$go, {
      runif(input$n)
    })
    output$plot <- renderPlot({
      hist(randomVals())
    })
  }

shinyApp(ui, server)

相关问题