actionButton在Shiny中不起作用

时间:2015-03-11 12:28:40

标签: r shiny

我在我的闪亮应用程序中设置了2个actionButton,用于将用户输入插入数据库并从数据库中删除一条记录。

mainPanel(
                            tabsetPanel(type = "tabs", 
                                    tabPanel("Phase1",
                                            column(4,uiOutput("Phase1", inline = FALSE),
                                                    wellPanel(
                                                            actionButton("P1_Add", "Add",icon=icon("plus-circle")),
                                                            actionButton("P1_Del", "Del",icon=icon("minus-circle"))
                                                                )),
                                            column(6,h1("Phase1 Input data is put here"),dataTableOutput("Phase1_Data"))

                                            ), 
                                    tabPanel("Phase2",uiOutput("Phase2",inline=FALSE)), 
                                    tabPanel("Phase3")
                            )
                    )

我还在server.R中定义了一个观察来响应我的点击。但似乎无法正常工作

            obs_p1_add<-observe({

                    if(input$P1_Add)
                    {
                        cat("just click add button")
                        cat("test")
                        print (input$P1_Add)
                        output$Phase2<-  renderUI({ 
                                list(h4("ha! change"))
                                })

                    }

                })

任何人都可以教我哪里出错了?非常感谢!

1 个答案:

答案 0 :(得分:0)

您的代码适合我!

ui.R:

library(shiny)

shinyUI(fluidPage(
    mainPanel(
      tabsetPanel(type = "tabs", 
                  tabPanel("Phase1",
                           column(4,uiOutput("Phase1", inline = FALSE),
                                  wellPanel(
                                    actionButton("P1_Add", "Add",icon=icon("plus-circle")),
                                    actionButton("P1_Del", "Del",icon=icon("minus-circle"))
                                  )),
                           column(6,h1("Phase1 Input data is put here"),dataTableOutput("Phase1_Data"))

                  ), 
                  tabPanel("Phase2",uiOutput("Phase2",inline=FALSE)), 
                  tabPanel("Phase3")
      )
    )
))

server.R:

library(shiny)

shinyServer(function(input, output) {

  obs_p1_add<-observe({

    if(input$P1_Add)
    {
      cat("just click add button")
      cat("test")
      print (input$P1_Add)
      output$Phase2<-  renderUI({ 
        list(h4("ha! change"))
      })

    }

  })

})

单击后在第二个选项卡中呈现文本:

enter image description here