所以我試圖做一個閃亮的應用程序,我有一個按鈕,只有當文件已上傳才顯示;爲即時通訊使用conditionalPanel。使條件面板依賴於與fileInput上傳的文件
ui.R:
require(shiny)
shinyUI(pageWithSidebar(
headerPanel("My App"),
sidebarPanel(
fileInput("files", "Choose file"),
conditionalPanel(
condition = "input.files",
actionButton("submitFiles", "Submit files for processing"))),
mainPanel(h3("Nothing to see here"))
))
我不認爲有什麼在我的server.R關心,因爲上面的例子並不做什麼。在上述條件下,按鈕從不出現,即條件從未如此。
有些事情我已經試過了我的情況是input.files.length > 0
,input.files.size() > 0
,這兩者導致該按鈕是目前之前我上傳的文件。我猜這是因爲在選擇文件之前,輸入$ files是一個空的data.frame,因此具有非零長度/大小,是嗎?
我可以用什麼條件來隱藏按鈕,直到至少有一個文件完成上傳?
我認爲另一個選擇是用uiOutput
取代conditionalPanel
,並調用在renderUI({actionButton(...)})
一個server.R觀察/分離塊,正在觀看input.files(if (nrow(input$files) < 1) return()
)的內部;這是唯一的方法嗎?如果我可以做到這一點,那麼我會選擇其中一種(超出conditionalPanel
,導致代碼減少)?
啊哈,我甚至不知道'outputOptions()'存在!這是一個棘手的方法來'隱藏'你的'輸出'列表中的東西,但它的作品。 – ClaytonJY
看來有些東西已經改變了,現在必須做''output.fileUploaded == true「'。 –