从服务器更改闪亮的输入值

时间:2017-04-07 00:42:25

标签: r shiny

我有一个动作按钮@AutoValue public abstract class Human implements Parcelable, Species { public static Human create(String humanVariable) { return new AutoValue_Human(humanVariable); } public static Human create(String name, String humanVariable) { return new AutoValue_Human(name, humanVariable); } public static TypeAdapter<Human> typeAdapter(Gson gson) { return new AutoValue_Human.GsonTypeAdapter(gson); } @SerializedName("name") public abstract String name(); @Nullable @SerializedName("human_variable") public abstract String humanVariable(); @Override public String name() { return name(); } } ,我想要在点击动作boton时更改名为rhm_clic的值和输入值。我现在有这个。

id=do

4 个答案:

答案 0 :(得分:3)

还有一种替代方法,它使用JS,我发现在某些情况下它非常有用。这使您不必使用update***input函数。此外,甚至不需要预先定义输入。

library(shiny)

ui <- fluidPage(
  tags$script("
    Shiny.addCustomMessageHandler('rhm_clic', function(value) {
    Shiny.setInputValue('rhm_clic', value);
    });
  ")

# additional UI code
)

server <- function(input, output, session) {
  observeEvent(input$do, {
    session$sendCustomMessage("rhm_clic", 'null')
  })
# Additional server code
}

shinyApp(ui, server)

这是一个很好的article by Joe Cheng 布局如何使用此框架的方法。

答案 1 :(得分:2)

最后,我选择从JavaScript创建一个按钮动作,并使用Shiny.onInputChange JavaScript函数。 ui中的以下代码解决了我的问题

div#parent.class > div#child.class, div#otherId.class

答案 2 :(得分:0)

您无法以这种方式更改闪亮创建的输入的值。要更改input$变量,需要通过inputText()actionButton()等实际输入流程进行更改。从技术上讲,这是另一种方式,但它是一个无证的工作,对这个问题毫无意义。如果您需要使用类似于闪亮input$的反应变量,则必须使用reactiveValues()函数调用创建一个。如果只是为变量赋值,则不需要反应变量。如果您尝试将先前创建的值重置为NULL,则必须创建一个反应变量并将其设置为NULL。以下是如何使用按钮将非反应变量设置为值或NULL。

actionButton("do","Putlabelhere")
observeEvent(input$do,{
    rhm_clic <- value #or NULL
    return(rhm_clic) 
#the return is not needed but a good idea for beginners
}

答案 3 :(得分:0)

我知道这已经2岁了,但是我把自己的答案放下来了,因为它看起来很简单。

我只是在observeEvent中重新创建了输出对象,并预先选择了我想要的值。

actionButton("do","Putlabelhere")

observeEvent(input$do,{
output$doSomethingElse = renderUI(selectInput("doSomethingElse", "This is a selectbox whose value I'm changing", choices = c("choice1","choice2","choice3","newchoice"), selected = "newchoice", multiple = FALSE))
}