在闪亮的情况下,是否可以根据客户端Web浏览器输入更新输入选择?

时间:2016-05-02 06:28:46

标签: javascript r shiny

我想设计一个应用程序,它也可以选择从客户端Web浏览器获取输入。因此,如果我的网址为MANIFEST.MF,我知道我可以使用

存储www.something.com?text=myValue
myValue

这个简单的应用程序从query <- parseQueryString(session$clientData$url_search) if (!is.null(query[['text']])) { query_text <<- query[['text']] } 获取值并将其呈现在selectizeInput中。

textOutput

如果从客户端网络浏览器传递任何值,我还是想更新ui <- shinyUI(fluidPage( fluidRow(column(6, selectizeInput("in1", label = NULL, choices = c("alpha", "beta", "gamma"), selected = "beta")), column(6, textOutput('out1'))) )) 的选择。

所以我在服务器端执行此操作

selectizeInput

如果我使用

启动我的应用
server <- shinyServer(function(input, output, session) {

  query_text <- character()

  observe({
    query <- parseQueryString(session$clientData$url_search)
    if (!is.null(query[['text']])) {
      query_text <<- query[['text']]
      updateSelectizeInput('in1',
                           label = NULL,
                           choices = c("alpha","beta", "gamma"),
                           selected = query_text,
                           server = TRUE)
    }
  })

  output$out1 <- renderText({
    input$in1
  })

})

我没有收到任何错误,我可以通过手动选择shinyApp(ui = ui, server = server) 中的值来修改textOutput。但是当我尝试使用浏览器传递值,从而触发selectizeInput条件时,我收到此错误

if

1 个答案:

答案 0 :(得分:1)

你所做的只是工作,除了...... updateSelectizeInput的第一个参数是session对象,而不是元素id。见?updateSelectizeInput。所以,只需添加它:

updateSelectizeInput(session, 'in1',
                           label = NULL,
                           choices = c("alpha","beta", "gamma"),
                           selected = query_text,
                           server = TRUE)

它会起作用。