R为Shiny gallery的mychooser函数重置输入值

R为Shiny gallery的mychooser函数重置输入值,r,shiny,R,Shiny,我仍在学习Shiny并开发自己的应用程序 以下小部件允许选择用户想要的列(带有实时示例): 用户界面 source(“chooser.R”) 流动摄影( 选择输入(“我的选择器”、“可用的青蛙”、“选定的青蛙”, row.names(usarrest),c(),size=10,multiple=TRUE ), 逐字输出(“选择”) ) 服务器.R 功能(输入、输出、会话){ 输出$selection方法如下 在chooser binding.JS中添加此JS代码,例如在binding.set

我仍在学习Shiny并开发自己的应用程序

以下小部件允许选择用户想要的列(带有实时示例):

用户界面
source(“chooser.R”)
流动摄影(
选择输入(“我的选择器”、“可用的青蛙”、“选定的青蛙”,
row.names(usarrest),c(),size=10,multiple=TRUE
),
逐字输出(“选择”)
)
服务器.R
功能(输入、输出、会话){
输出$selection方法如下

chooser binding.JS
中添加此JS代码,例如在
binding.setValue
之后:

binding.receiveMessage = function (el, data) {
  $(".chooser select.left").empty();
  $(".chooser select.right").empty();
  if(data.left !== null){
    for(var i = 0; i < data.left.length; ++i){
      $(".chooser select.left")
        .append($("<option>" + data.left[i] + "</option>"));
    }
  }
  if(data.right !== null){
    for(var i = 0; i < data.right.length; ++i){
      $(".chooser select.right")
        .append($("<option>" + data.right[i] + "</option>"));
    }
  }
  var chooser = $(el);
  updateChooser(chooser);
  chooser.trigger("change");
};
下面是一个例子:

# ui ####
ui <- fluidPage(
  br(),
  chooserInput("mychooser", "Available frobs", "Selected frobs",
               row.names(USArrests), c(), size = 10, multiple = TRUE
  ),
  verbatimTextOutput("selection"),
  br(),
  actionButton("update", "Update"),
  actionButton("reset", "Reset")
)

# server ####
server <- function(input, output, session) {

  output$selection <- renderPrint(
    input$mychooser
  )

  observeEvent(input$update, {
    updateChooserInput(session, "mychooser", 
                       left = c("aaa", "bbb", "ccc"), 
                       right = c("xxx", "yyy", "zzz"))
  })

  observeEvent(input$reset, {
    updateChooserInput(session, "mychooser", 
                       left = row.names(USArrests), 
                       right = c())
  })

}

shinyApp(ui, server)
#用户界面####

ui-Hmm…需要实现
绑定.setValue
,这将允许使用
会话$setInputValue
@Stéphanelarent请您再解释一下好吗?谢谢您的回答,我会检查并回来接受答案
# ui ####
ui <- fluidPage(
  br(),
  chooserInput("mychooser", "Available frobs", "Selected frobs",
               row.names(USArrests), c(), size = 10, multiple = TRUE
  ),
  verbatimTextOutput("selection"),
  br(),
  actionButton("update", "Update"),
  actionButton("reset", "Reset")
)

# server ####
server <- function(input, output, session) {

  output$selection <- renderPrint(
    input$mychooser
  )

  observeEvent(input$update, {
    updateChooserInput(session, "mychooser", 
                       left = c("aaa", "bbb", "ccc"), 
                       right = c("xxx", "yyy", "zzz"))
  })

  observeEvent(input$reset, {
    updateChooserInput(session, "mychooser", 
                       left = row.names(USArrests), 
                       right = c())
  })

}

shinyApp(ui, server)