Ich möchte eine App entwerfen, die optional auch Eingaben vom Client-Webbrowser übernehmen kann. Also, wenn meine URL ist www.something.com?text=myValue
weiß ich, dass ich myValue
mitIn glänzenden, ist es möglich, Eingabeauswahl basierend auf Client-Web-Browser-Eingabe zu aktualisieren?
query <- parseQueryString(session$clientData$url_search)
if (!is.null(query[['text']])) {
query_text <<- query[['text']]
}
Diese einfache App von einem selectizeInput
nimmt den Wert speichern kann und macht es in einem textOutput
.
ui <- shinyUI(fluidPage(
fluidRow(column(6, selectizeInput("in1",
label = NULL,
choices = c("alpha",
"beta",
"gamma"),
selected = "beta")),
column(6, textOutput('out1')))
))
Noch mag ich die Auswahl meines selectizeInput
wenn jeder Wert aus dem Client-Web-Browser übergeben wird, aktualisieren.
So mache ich das auf der Server-Seite
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
})
})
Wenn ich meine app starten mit
shinyApp(ui = ui, server = server)
Ich bekomme keine Fehler, und ich bin in der Lage, die textOutput
durch manuell ändern Auswahl ein Wert von selectizeInput
. Aber wenn ich versuche, einen Wert mit meinem Browser zu übergeben, damit meine if
Zustand Auslösung, bekomme ich diesen Fehler
Warning: Error in $: $ operator is invalid for atomic vectors
Stack trace (innermost first):
56: dropNulls
55: updateSelectizeInput
54: observerFunc [/Users/francesco/Desktop/Tests/testy/app.R#35]
1: runApp
ERROR: [on_request_read] connection reset by peer