我有一个动作按钮@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
答案 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))
}