【问题标题】:shiny: show mainPanel on action button click闪亮:在操作按钮单击时显示 mainPanel
【发布时间】:2018-10-09 06:45:58
【问题描述】:

只有当用户单击操作按钮时,有没有办法在 mainPanel 中显示所有内容?我在互联网上搜索了一段时间的答案,但无法真正找到答案。我知道我可以使用 hidden - 它适用于 mainPanel 内的较小元素,例如单击时显示图片但不适用于整个 mainPanel 本身。有什么建议?我认为找到一种方法将整个主面板包装在隐藏中而不是主面板中的每个元素都包装在隐藏中会更容易,但我似乎无法找到使其工作的方法。

在仪表板正文中:

fluidRow(
  column(12, actionButton("analyze", "Fetch Data!", width = "100px"))), 

hidden(    
     mainPanel(  
        hidden( (htmlOutput("artistpic")), // this works fine & shows on button click
        infoBoxOutput("approvalBox"))     
            )),

服务器:

  pic <- eventReactive(input$analyze2, {
      print(get_id_picture()[3])
      url = toString(get_id_picture()[3])
      print(url)
      url 
  })
  output$artistpic <- renderText({c('<img src="',pic(),'"width="17%" height="17%">')})

【问题讨论】:

    标签: r shiny shiny-server shinydashboard


    【解决方案1】:

    使用shinyjs 很容易。

    只需用div() 标签包围mainPanel(),这样您就可以使用它的id 来切换它的可见性,并使用hidden() 隐藏div 标签来启动应用程序,如下例所示:

    # ui.R
    
    fluidPage(
      useShinyjs(),
      actionButton("toggle.main.button", "Toggle Main"),
      div(id = "main",
        mainPanel(
          p("This paragraph is in main."),
          p("This one too!")
        )
      ) %>% shinyjs::hidden()
    )
    
    # server.R
    
    library(shinyjs)
    
    function(input, output, session) {
    
      # Toggling visability of main on button click.
      observeEvent(input$toggle.main.button, {
        shinyjs::toggle("main")
      })
    
    }
    

    【讨论】:

      猜你喜欢
      • 2016-02-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-14
      • 2018-11-14
      • 2017-10-12
      • 2013-11-15
      • 1970-01-01
      相关资源
      最近更新 更多