【发布时间】:2018-01-11 09:31:47
【问题描述】:
在以下示例中,文本未显示在开头。如果我单击“显示”按钮,则会出现文本。如果我然后单击“隐藏”按钮,则不会再发生其他任何事情。 事实上,“textis$visible”变量总是有正确的值,但我认为observeEvent funktion中的if语句只在第一次点击按钮后计算。
有没有办法强制observeEvent重新评估if语句?或者是否有其他方法可以阻止 Shiny 在服务器部分执行代码并重新启动它(在实际情况下,if 语句中会有一大堆函数调用,而不仅仅是隐藏和显示一些文本)
library(shiny)
ui <- fluidPage(
actionButton(inputId="show","show"),
actionButton(inputId="hide","hide"),
textOutput(outputId = "some_text")
)
server <- function(input, output) {
textis<-reactiveValues(visible=FALSE)
observeEvent(input$show,
textis$visible<-TRUE)
observeEvent(input$hide,
textis$visible<-FALSE)
observeEvent(textis$visible , if(textis$visible){
output$some_text<-renderText({"this is some text"})
})}
shinyApp(ui = ui, server = server)
【问题讨论】: