2017-10-16 74 views
0

我有一個面板後面的閃亮應用程序的配置選項。而且,配置選項是使用uiOutput/renderUI在服務器端生成的。閃亮延遲評估不在當前選定面板中的項目,但有時需要強制評估。是否有可能強制進行服務器端評估?可以強制執行隱藏面板嗎?

下面是一個例子:

library(shiny) 

ui <- fluidPage(
    tabsetPanel(tabPanel("Main", 
         plotOutput("dots")), 
       tabPanel("Settings", 
         uiOutput("even.or.odd") 
       ) 
    ) 
) 

server <- function(input, output) { 

    output$dots <- renderPlot({ 
    plot(seq(ifelse(input$even, 0, 1), 20, 2)) 
    }) 
    output$even.or.odd <- renderUI(checkboxInput('even', "Even?",TRUE)) 
} 

shinyApp(ui = ui, server = server) 

或者從RStudio做runGist('https://gist.github.com/dkulp2/d897c21dfd1a20f9531b6454ea02a533')

這失敗在啓動時,因爲input$even是不確定的,直到「設置」面板中顯示出來。 (然後應用程序工作正常。)有沒有什麼辦法可以讓Shiny在不透露面板的情況下評估even.or.odd函數?

+0

這個例子設置suspendWhenHidden = FALSE強制隱藏輸出對象的執行是平凡和簡單的解決辦法是刪除uiOutput/renderUI,只是放置'checkboxInput'在'ui'。但是,通常假設由於某些服務器端邏輯,uiOutput/renderUI是必需的。 –

回答

1

您可以通過outputOptions

outputOptions(output, "even.or.odd", suspendWhenHidden = FALSE)