是的,这是可能的,因为 daattali sugested shinyjs 可以帮助您完成一些标准的 Javascript 任务。
如果你想隐藏 shinydashboardbox
元素,你必须(据我所知)使用一些自定义 Javascript,如下所示:
library(shiny)
library(shinydashboard)
library(shinyjs)
ui <-dashboardPage(
dashboardHeader(),
dashboardSidebar(
),
dashboardBody(
tags$head(
tags$script(
HTML("
Shiny.addCustomMessageHandler ('hide',function (selector) {
$(selector).parent().slideUp();
});"
)
)
),
box( id ="greetbox",
width = 12,
height = "100%",
solidHeader = TRUE,
status = "info",
div(id="greeting", "Greeting here")
),
box( id ="box",
width = 12,
height = "100%",
solidHeader = TRUE,
status = "success",
textInput("txtbx","Enter text: ")
)
)
)
server <- shinyServer(function(input, output, session) {
observeEvent(input$txtbx,{
if (input$txtbx == "") return(NULL)
session$sendCustomMessage (type="hide", "#greetbox")
print(input$txtbx)
})
})
shinyApp(ui = ui, server = server)
该框的 html 布局如下所示:
<div class="box box-solid box-info">
<div class="box-body" id="greetbox">
<!-- Box content here -->
</div>
</div>
由于我们想要隐藏整个盒子,我们必须将父元素隐藏到盒子函数中设置的 id,因此是 jQuery 代码片段。