在闪亮的

时间:2016-08-04 21:33:04

标签: r shiny

在我的Shiny应用程序中,我试图包含显示或隐藏操作按钮的逻辑,具体取决于是否定义了ui.R中的其他用户输入。由于应用程序中的一些其他复杂性,我无法使用uiOutput / renderUI功能来执行此操作。

我的方法是为输入创建一个观察者,然后使用CSS标签显示或隐藏操作按钮。我不了解CSS,因此也不知道。

这是我申请表中的ui表格 -

enter image description here

现在,我有一个反应函数locationSpecified,它返回输入位置是否为空,基于此我必须显示或隐藏" RUN"按钮。

以下是我如何添加" RUN" ui.r中的按钮......

fluidRow(column(6, align="center", offset = 3, actionButton("action", "RUN")))

这就是我在server.R中尝试的(但显然不能正常工作)......

  observe({
    if(locationSpecified() == 1)
      tags$head(tags$style(type="button/css", ".btn {display: inline-block}"))
    if(locationSpecified() == 0)
      tags$head(tags$style(type="button/css", ".btn {display: none}"))
  })

我希望解决这个问题并不复杂,如果你能告诉我如何让它发挥作用,我将不胜感激。

提前致谢,

与Ashish

2 个答案:

答案 0 :(得分:6)

最终使用shinyjs工作了。

#ui
useShinyjs(),
fluidRow(column(6, align="center", offset = 3, actionButton("action", "RUN"))))

#server
observe({
  shinyjs::hide("action")

  if(locationSpecified())
     shinyjs::show("action")
})

感谢carl将我指向shinyjs。

答案 1 :(得分:5)

您可以像conditionalPanel这样使用:

#UI
conditionalPanel(condition='input.location!=null && input.location!=""',
fluidRow(column(6, align="center", offset = 3, actionButton("action", "RUN"))))

或者您可以使用shinyjs' toggle

#UI
useShinyjs() # include useShinyjs() somewhere in UI
#server
observe({ toggle(id="action", condition=!is.null(input$location))})