在我的Shiny应用程序中,我试图包含显示或隐藏操作按钮的逻辑,具体取决于是否定义了ui.R中的其他用户输入。由于应用程序中的一些其他复杂性,我无法使用uiOutput / renderUI功能来执行此操作。
我的方法是为输入创建一个观察者,然后使用CSS标签显示或隐藏操作按钮。我不了解CSS,因此也不知道。
这是我申请表中的ui表格 -
现在,我有一个反应函数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
答案 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))})