首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R闪亮: uiOutput中的条件actionButton

R闪亮: uiOutput中的条件actionButton
EN

Stack Overflow用户
提问于 2021-06-17 05:38:18
回答 1查看 24关注 0票数 0

我有两个actionButtons,允许通过数字1-6导航。然而,我希望只有在数字1显示时才删除“后退”按钮(否则保留),而在数字6上删除“下一步”按钮(并保留整个数字1-5),以便为序列的开始和结束提供直观的帮助。

请看我在底部的不成功代码(#被注释掉了,因为它阻止了从数字2到5的成功转换)。

如何有条件地呈现这些按钮?

代码语言:javascript
复制
library(shiny)
library(shinyWidgets)



ui <- fluidPage(
  
  fluidRow(
    div(column(5,uiOutput("back"),align= "right")),
    div( column(5,uiOutput("next_q")),align = "left")),
  fluidRow(  
    column(5,offset = 3,id = "qa1", uiOutput("ui_q1"),br(),br(),
    )),
)

server <- function(input, output, session) {
  qbank=reactive(as.vector(c(1,2,3,4,5,6)))

  
  values <- reactiveValues()
  values$count <- 1
  myReactives <- reactiveValues(reactInd = 0)
  
  observe({
    input$next_q
    myReactives$reactInd <- 1
  })
  
  observe({
    input$back
    myReactives$reactInd <- 2
  })
  
  
  ntext <- eventReactive(input$next_q,{
    if(values$count != length(qbank())){
      values$count <- values$count + 1
      return(qbank()[values$count])
    }
    else{
      return(qbank()[length(qbank())])
    }
  })
  
  
  btext <- eventReactive(input$back,{
    if(values$count != 1){
      values$count <- values$count - 1
      return(qbank()[values$count])
    }
    else{
      return(qbank()[1])
    }
  })
  
  q <- reactive({
    if(input$next_q == 0){
      return(qbank()[1])
    }
    else if(myReactives$reactInd==1) return(
      ntext())
    else if(myReactives$reactInd==2)return(
      btext())
  })  
  
  q1 = reactive((q()[1]))
  output$q1 = renderText(q1())
  output$ui_q1 = renderUI(textOutput("q1"))
  
  
  output$back = renderUI({
    
    ## I cannot get the following if statement to function correctly
   # if(values$count==1) return (NULL)
   # else
      (actionButton("back","back"))})
  
  
  output$next_q = renderUI(    
    
    ## I cannot get the following if statement to function correctly
   # if(values$count==length(qbank()))
   # return (NULL)
   # else
      actionButton("next_q","next"))
}

shinyApp(ui, server)

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-06-17 05:56:40

我构建了一个玩具示例,演示如何在值为1时删除back按钮,在值为6时删除next按钮。从这个工作示例中,您可以调整代码以类似的方式工作:

代码语言:javascript
复制
library(shiny)

ui <- fluidPage(

    fluidRow(column(12,align="center",textOutput("currentNum"))),
    fluidRow(
        column(6,align="right",uiOutput("backBut")),
        column(6,align="left",uiOutput("nextBut"))
    )
    
)

server <- function(input, output) {
    
    rv <- reactiveValues(currPage=1)
    
    observeEvent(input$backButton,{
        rv$currPage <- rv$currPage - 1
    })
    
    observeEvent(input$nextButton,{
        rv$currPage <- rv$currPage + 1
    })
    
    output$currentNum <- renderText({rv$currPage})
    
    output$backBut <- renderUI({
        if(rv$currPage>1){
            actionButton("backButton","< Back")
        } 
    })
    
    output$nextBut <- renderUI({
        if(rv$currPage<6){
            actionButton("nextButton","Next >")
        } 
    })
   
}

shinyApp(ui = ui, server = server)

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68010315

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档