1
我想建立一个闪亮的web应用程序,其中:闪亮的应用程序 - 寻呼
- 首先,页面显示为用户输入选择(例如下拉框中,输入文本字段等)
- 有是用户点击的下一个按钮,它将引导他们进入下一页,在那里他们可以输入/回答另一组问题。
- 然后在最后一页,结果(可视化/分析)出现在他们的输入基础上。
- 后退按钮是在情况下,用户需要修改他们的答案/输入
是否有任何部件/方法可以做到这一点?
任何建议将不胜感激:-)
干杯!
我想建立一个闪亮的web应用程序,其中:闪亮的应用程序 - 寻呼
是否有任何部件/方法可以做到这一点?
任何建议将不胜感激:-)
干杯!
您可以将应用程序的各个部分放在div中,并使用shinyjs包显示和隐藏它们。这也可以让你建立条件来推进你的应用程序的下一部分。看下面的例子。在这个例子中,如果用户在第一部分回答问题,用户只能继续第2部分。
希望这会有所帮助!
library(shiny)
library(shinyjs)
ui<- shinyUI(fluidPage(
useShinyjs(),
div(id="div_1",
h3('Section 1'),
textInput("question1","what is the airspeed velocity of an unladen swallow?"),
actionButton("continue1","Continue.")
),
shinyjs::hidden(div(id="div_2",
h3('Section 2'),
textInput("question2","what is your favorite color?"),
actionButton("continue2","Continue."),
actionButton("goback2","Go back!")
)),
shinyjs::hidden(div(id="div_3",
h3('Section 3'),
textOutput("results"),
actionButton("goback3","Go back!")
))
)
)
server <- function(input,output)
{
observeEvent(input$continue1,{
if(nchar(input$question1)>0)
{
shinyjs::hide("div_1")
shinyjs::show("div_2")
}
else
{
showModal(modalDialog(
title = "Important message",
"How about you actually answer the question before continuing?"
))
}
})
observeEvent(input$continue2,{
shinyjs::hide("div_2")
shinyjs::show("div_3")
})
observeEvent(input$goback2,{
shinyjs::hide("div_2")
shinyjs::show("div_1")
})
observeEvent(input$goback3,{
shinyjs::hide("div_3")
shinyjs::show("div_2")
})
output$results <- renderText({paste0("Your answers were: '", input$question1,"' and '", input$question2, "'.") })
}
shinyApp(ui,server)
谢谢。这是完美的:) –
很高兴我能帮上忙。如果能解决您的问题,请考虑接受答案吗?谢谢! – Florian