是否存在像conditionalPanel这样的闪亮函数,它们通常会公开输入?

时间:2017-06-13 16:19:58

标签: shiny shinyjs

conditionalPanel是一个方便的方法来包装一个返回布尔值的javascript表达式,以显示或隐藏HTML对象。是否有更普遍的事情暴露input?如果没有,为什么不呢?

假设您有一个要手动淡出的滑块和绘图。拥有一个函数比较方便,比如说jsExpr,并写下类似的东西:

sliderInput("opacity", "Opacity", min=0, max=0.5, value=0.2, step=.1),
div(style=paste0('opacity:',jsExpr("input.opacity*2")), plotOutput("myPlot"))

在这里,我已经在表达式中添加了*2,只是为了强调我想使用来自input的任意计算值。如果conditionalPanel可以根据布尔javascript表达式显示/隐藏,为什么不更一般地如上所述?

使用shinyjs,最好的替代解决方案似乎要复杂得多。例如:

library(shiny)
library(shinyjs)

adjustOpacity <- "shinyjs.adjustOpacity = function(params) {
$('.myplot').css('opacity',params)
}"

ui <- fluidPage(
  useShinyjs(),
  extendShinyjs(text=adjustOpacity),

  sliderInput("opacity", "Opacity", min=0, max=0.5, value=0.2, step=.1),
  div(class="myplot", plotOutput("myPlot"))
)

server <- function(input, output) {
  output$myPlot <- renderPlot({ plot(faithful, pch=15) })

  observeEvent(input$opacity, {
    js$adjustOpacity(input$opacity*2)
  })
}
shinyApp(ui = ui, server = server)

0 个答案:

没有答案