R 如何在Shiny中隐藏条件面板?
如何在Shiny中隐藏条件面板?请参见以下示例:R 如何在Shiny中隐藏条件面板?,r,shiny,shinyjs,R,Shiny,Shinyjs,如何在Shiny中隐藏条件面板?请参见以下示例: library(shiny) ui <- fluidPage( actionButton("eval","Evaluate"), numericInput("num_input", "If number is changed, cp must hide", value = 0), conditionalPanel( condition = "input.eval", "text")) server &
library(shiny)
ui <- fluidPage(
actionButton("eval","Evaluate"),
numericInput("num_input", "If number is changed, cp must hide", value = 0),
conditionalPanel(
condition = "input.eval",
"text"))
server <- function(input, output, session) {
observeEvent(input$num_input, {
input$eval <- 0
})}
shinyApp(ui, server)
但这也不起作用:应用程序会定期打开,单击“评估”按钮后会显示“条件面板”,但数字更改后不会发生任何变化。我从来没有玩过多少
条件面板,因此不确定它是否有隐藏/显示的默认设置。以下内容可能会为您提供所需的输出
library(shiny)
library(shinyjs)
if(interactive()){
shinyApp(
ui <- fluidPage(
shinyjs::useShinyjs(),
actionButton("eval","Evaluate"),
numericInput("num_input", "If number is changed, cp must hide", value = 0),
shinyjs::hidden(
div(
id = "cp1",
conditionalPanel(condition = "input.eval",
textOutput("text1")))
)
),
server = function(input, output, session){
output$text1 <- renderText({
input$num_input
})
observeEvent(input$eval,{
shinyjs::show("cp1")
})
observeEvent(input$num_input,{
shinyjs::hide("cp1")
})
}
)
}
库(闪亮)
图书馆(shinyjs)
if(interactive()){
shinyApp(
ui您可以创建一个输出值,并将其仅用于条件面板。关于dynamic ui的文章解释了如何做到这一点:
条件还可以使用输出值;它们的工作方式相同(output.foo提供输出foo的值)。如果您希望使用R表达式作为条件参数,则可以在服务器函数中创建反应式表达式并将其分配给新输出,然后在条件表达式中引用该输出
如果执行此操作,请确保还设置了outputOptions(output,[newOutputName],suspendWhenHidden=FALSE)。(这是必要的,因为Shining通常不会向浏览器发送UI中隐藏或不存在的输出值。但是,在这种情况下,浏览器确实需要知道最新的输出值,以便正确评估ConditionalPanel函数的条件-suspendWhenHidden=FALSE确保这一情况发生)
库(闪亮)
用户界面
library(shiny)
library(shinyjs)
if(interactive()){
shinyApp(
ui <- fluidPage(
shinyjs::useShinyjs(),
actionButton("eval","Evaluate"),
numericInput("num_input", "If number is changed, cp must hide", value = 0),
shinyjs::hidden(
div(
id = "cp1",
conditionalPanel(condition = "input.eval",
textOutput("text1")))
)
),
server = function(input, output, session){
output$text1 <- renderText({
input$num_input
})
observeEvent(input$eval,{
shinyjs::show("cp1")
})
observeEvent(input$num_input,{
shinyjs::hide("cp1")
})
}
)
}
library(shiny)
ui <- fluidPage(
actionButton("eval","Evaluate"),
numericInput("num_input", "If number is changed, cp must hide", value = 0),
conditionalPanel("input.eval && !output.hide_panel", "text")
)
server <- function(input, output, session) {
output$hide_panel <- eventReactive(input$num_input, TRUE, ignoreInit = TRUE)
outputOptions(output, "hide_panel", suspendWhenHidden = FALSE)
}
shinyApp(ui, server)