私は自分のアプリで直面している問題を再現するために、以下の最小限のコードを作成しました。私がやろうとしています何同じobserveEventをトリガーする複数の入力がmodalDialogのボタンで機能しない
はobserveEvent
ためactionButton
の1しか呼ばれobserveEvent
内で呼び出される関数の後に作成されますmodalDialog
に存在する複数の入力に対して同じobserveEvent
を呼び出すです。私が直面している問題は、observeEvent
をobserveEvent
という複数の入力で呼び出すために、modalDialog
のactionButton
を追加した後では決して呼び出されないということです。このボタンを削除すると、observeEvent
が呼び出されます。以下は、私のコードです:
library(shiny)
#Function called from shiny server
func <- function(input,output){
if(is.null(input$txt_Modal)){
output$txt <- renderText("No Text Entered Yet!")
showModal(modalDialog(title = "Choose Survival Time",
textInput(inputId = "txt_Modal", "Enter text:"),
easyClose = FALSE, footer = actionButton(inputId = "btn_Modal_OK","OK")))
}else{
output$txt <- renderText({input$txt_Modal})
}
}
##UI code
ui <- fluidPage(
actionButton(inputId = "btn", label = "Enter function and Print Value"),
textOutput(outputId = "txt")
)
##Server code
server <- function(input, output, session){
observeEvent({
input$btn
input$btn_Modal_OK
},{
func(input, output)
})
}
shinyApp(ui = ui, server = server)
ここinput$btn_Modal_OK
は機能func
内で作成されModalDialog
に作成されるボタンです。 observeEvent
からinput$btn_Modal_OK
を削除すると、コードは期待通りに機能します。
なぜこのようなことが起こったのかは、プログラムの開始時にinput$btn_Modal_OK
がNULL
であるためです。このエラーを取り除くと思う方法の1つは、input$btn_Modal_OK
に別のobserveEvent
を書き込むことです。私の実際のコードにはobserveEvent
の中に多くの行のコードがあり、別のobserveEvent
に書き換えたくないのでコードが大きくなります。
私は実際のアプリでやっていることではありません。問題を再現するためにこのコードを書いただけです。どんな助けも高く評価されます!