2015-03-31 37 views
1

一旦它被点击就可以捕获actionButton的标签吗?捕获一个actionButton被点击后的标签

想象一下,我的ui.R上有3个按钮,取决于我点击了哪一个按钮,我想在server.R上执行不同的操作。

一个需要注意的是,按钮动态创建与动态标签server.R

感谢

回答

1

1)(从而掌握上单击该标签的必要性)被点击了什么按钮,在去年用户?

要回答这个问题,你可以使用observeEvent函数,并通过使用reactiveValues函数设置一个变量。请确保您更新您的库并在最新版本的R (version 3.1.3)中工作,因为shiny依赖于此版本。 Windows系统,你可以按照例如在如何更新here

rm(list = ls()) 
library(shiny) 

ui =fluidPage(
    sidebarPanel(
    textInput("sample1", "Name1", value = "A"), 
    textInput("sample2", "Name2", value = "B"), 
    textInput("sample3", "Name3", value = "C"), 
    div(style="display:inline-block",uiOutput("my_button1")), 
    div(style="display:inline-block",uiOutput("my_button2")), 
    div(style="display:inline-block",uiOutput("my_button3"))), 
    mainPanel(textOutput("text1")) 
) 

server = function(input, output, session){ 

    output$my_button1 <- renderUI({actionButton("action1", label = input$sample1)}) 
    output$my_button2 <- renderUI({actionButton("action2", label = input$sample2)}) 
    output$my_button3 <- renderUI({actionButton("action3", label = input$sample3)}) 

    my_clicks <- reactiveValues(data = NULL) 

    observeEvent(input$action1, { 
    my_clicks$data <- input$sample1 
    }) 

    observeEvent(input$action2, { 
    my_clicks$data <- input$sample2 
    }) 

    observeEvent(input$action3, { 
    my_clicks$data <- input$sample3 
    }) 

    output$text1 <- renderText({ 
    if (is.null(my_clicks$data)) return() 
    my_clicks$data 
    }) 
} 
runApp(list(ui = ui, server = server)) 

2)保存用于进一步操纵的点击低于

下面是Shiny UI: Save the Changes in the Inputs和基于的jdharrison工作的小例子shinyStorage包。

rm(list = ls()) 
#devtools::install_github("johndharrison/shinyStorage") 
library(shinyStorage) 
library(shiny) 

my_clicks <- NULL 

ui =fluidPage(
    # 
    addSS(), 
    sidebarPanel(
    textInput("sample_text", "test", value = "0"), 
    uiOutput("my_button")), 
    mainPanel(uiOutput("text1")) 
) 

server = function(input, output, session){ 
    ss <- shinyStore(session = session) 

    output$my_button <- renderUI({ 
    actionButton("action", label = input$sample_text) 
    }) 

    observe({ 
    if(!is.null(input$sample_text)){ 
     if(input$sample_text != ""){ 
     ss$set("myVar", input$sample_text) 
     } 
    } 
    }) 

    output$text1 <- renderUI({ 
    input$action 
    myVar <- ss$get("myVar") 
    if(is.null(myVar)){ 
     textInput("text1", "You button Name") 
    }else{ 
     textInput("text1", "You button Name", myVar)   
    } 
    }) 
} 
runApp(list(ui = ui, server = server)) 
+0

谢谢pops,但那不是我要找的。 我想根据按钮的标签在组件上设置文本。我用你在这里发布的代码(http://stackoverflow.com/questions/27326929/how-to-update-button-labels-in-r-shiny/27458250#comment46948109_27458250)来动态创建带有动态标签的按钮(让我们说A,B和C),现在我需要知道用户点击了哪个按钮。 谢谢 – Diego 2015-04-01 10:10:39

+0

嗨@Diego,你有没有想过如何做到这一点?我遇到类似的问题......谢谢。 – Carlos 2016-12-02 11:27:03