R Shiny顺序使用模态

时间:2017-07-24 20:32:27

标签: r shiny

我想检查一些用户输入的数据,测试一些条件并通过modalDialog()发出警报以获得更多用户输入(例如提示X is NA; is this correct? Y/N)。

但是,我发现如果我在showModal(modalDialogFunction())中放置多个observeEvent个调用,则只会为用户评估最后一个,因为模式会弹出,等等{{1 }}语句验证条件是否满足。

如何以这种或类似的格式执行顺序模态?

单个文件应用:与print一起玩,看看如何执行模态。

numericInput()

1 个答案:

答案 0 :(得分:1)

我发现不可能有两个输入按钮具有相同的ID并且同时可见。要解决这个问题,打开第一个模态的按钮需要一个不同的ID - 模态中的所有"下一个" -Buttons可以共享一个ID,因为它们永远不会同时显示。请查看此工作示例:

ui <- fluidPage(
      actionButton("openFirst", label="Click")
)

server <- function(input, output) {

  # function to create a modal, can be different functions as well
  makeModal <- function(text){
    modalDialog(
      footer=list(actionButton("click", label="Click to continue"), modalButton("Close")),
      numericInput("number", "Enter a number", value=0),
      p(text)
    )
  }

  # open the first modal
  observeEvent(input$openFirst, {
    showModal(makeModal("first one opened"))
  })

  # open a new modal at button click.
  observeEvent(input$click, {
    if(input$number > 15){ showModal(makeModal("input was greater than 15!"))
    }else if(input$number > 5){ showModal(makeModal("input was greater than five!"))
    }else{
      showModal(makeModal("Input was not greater than five!"))
    }
  })
}

shinyApp(ui = ui, server = server)