无需等待 modalDialog 的输入即可执行闪亮的代码
Shiny code executed without waiting for inputs from modalDialog
我在不等待来自 modalDialog 的用户输入的情况下执行闪亮代码时遇到问题。这是一个简单的例子。该应用程序有一个 Print 按钮和一个输出框。当用户单击按钮时,应该弹出一个 modalDialog 询问用户要打印什么。如果用户点击 Print Button 1 按钮,那么最终的打印输出将是 Button 1 Print Result。按钮 2 也是如此。
library(shiny)
# Main app UI
ui <- fluidPage(
actionButton('print','Print')
,verbatimTextOutput('output')
)
# Main app server
server <- function(input, output, session) {
printVal <- reactiveVal("Should not be printing this")
observeEvent(input$print,{
showModal(
modalDialog(
title = 'What to print?'
,"Decide what to print"
,footer = tagList(
actionButton('btn1','Print Button 1')
,actionButton('btn2','Print BUtton 2')
)
)
)
output$output <- renderPrint({printVal()})
})
observeEvent((input$btn1),{
printVal('Button 1 Print Result')
removeModal()
})
observeEvent((input$btn2),{
printVal('Button 2 Print Result')
removeModal()
})
}
shinyApp(ui, server)
但最终发生的事情是,当单击“打印”时,设置为“不应该打印此”的默认值被打印在输出 BEFORE用户有机会单击 modalDialog 中的任何按钮。我想要的是唯一的输出应该是单击按钮 1 或 2 的结果。但它似乎闪亮地执行了行
output$output <- renderPrint({printVal()})
无需等待来自 modalDialog 的操作。
基本上,我怎样才能使 printVal 在使用之前从 modalDialog 更新?预先感谢您的回复。
您过早定义了 output$output
。试试这个
observeEvent((input$btn1),{
output$output <- renderPrint({printVal()})
printVal('Button 1 Print Result')
removeModal()
})
observeEvent((input$btn2),{
output$output <- renderPrint({printVal()})
printVal('Button 2 Print Result')
removeModal()
})
对我来说效果很好。
我在不等待来自 modalDialog 的用户输入的情况下执行闪亮代码时遇到问题。这是一个简单的例子。该应用程序有一个 Print 按钮和一个输出框。当用户单击按钮时,应该弹出一个 modalDialog 询问用户要打印什么。如果用户点击 Print Button 1 按钮,那么最终的打印输出将是 Button 1 Print Result。按钮 2 也是如此。
library(shiny)
# Main app UI
ui <- fluidPage(
actionButton('print','Print')
,verbatimTextOutput('output')
)
# Main app server
server <- function(input, output, session) {
printVal <- reactiveVal("Should not be printing this")
observeEvent(input$print,{
showModal(
modalDialog(
title = 'What to print?'
,"Decide what to print"
,footer = tagList(
actionButton('btn1','Print Button 1')
,actionButton('btn2','Print BUtton 2')
)
)
)
output$output <- renderPrint({printVal()})
})
observeEvent((input$btn1),{
printVal('Button 1 Print Result')
removeModal()
})
observeEvent((input$btn2),{
printVal('Button 2 Print Result')
removeModal()
})
}
shinyApp(ui, server)
但最终发生的事情是,当单击“打印”时,设置为“不应该打印此”的默认值被打印在输出 BEFORE用户有机会单击 modalDialog 中的任何按钮。我想要的是唯一的输出应该是单击按钮 1 或 2 的结果。但它似乎闪亮地执行了行
output$output <- renderPrint({printVal()})
无需等待来自 modalDialog 的操作。
基本上,我怎样才能使 printVal 在使用之前从 modalDialog 更新?预先感谢您的回复。
您过早定义了 output$output
。试试这个
observeEvent((input$btn1),{
output$output <- renderPrint({printVal()})
printVal('Button 1 Print Result')
removeModal()
})
observeEvent((input$btn2),{
output$output <- renderPrint({printVal()})
printVal('Button 2 Print Result')
removeModal()
})
对我来说效果很好。