2015-09-30 17 views
12

Trong web trình duyệt bạn truyền tham số cho một trang web nhưLàm thế nào để bạn vượt qua các tham số để một ứng dụng sáng bóng qua URL

www.mysite.com/?parameter=1

Tôi có một ứng dụng sáng bóng và tôi sẽ thích sử dụng tham số được chuyển vào trang web trong các tính toán làm đầu vào. Vì vậy, nó có thể làm một cái gì đó như www.mysite.com/?parameter=1 và sau đó sử dụng tham số đầu vào!

Bạn có thể cung cấp bất kỳ mã mẫu hoặc liên kết nào không?

Cảm ơn bạn

+0

Xem thêm [trạng thái đánh dấu] (http: // sáng bóng .rstudio.com/articles/bookmarking-state.html) trên trang web sáng bóng (xem trong [câu trả lời SO này] (https://stackoverflow.com/a/25385474/2641825)). Nó cho phép bạn sử dụng url của biểu mẫu: https://gallery.shinyapps.io/113-bookmarking-url/?_inputs_&n=149. –

Trả lời

22

Bạn sẽ phải tự cập nhật thông tin khi ứng dụng khởi chạy dựa trên URL. Bạn sẽ sử dụng biến số session$clientData$url_search để nhận tham số truy vấn. Dưới đây là một ví dụ, bạn có thể dễ dàng mở rộng này vào nhu cầu của bạn

library(shiny) 

shinyApp(
    ui = fluidPage(
    textInput("text", "Text", "") 
), 
    server = function(input, output, session) { 
    observe({ 
     query <- parseQueryString(session$clientData$url_search) 
     if (!is.null(query[['text']])) { 
     updateTextInput(session, "text", value = query[['text']]) 
     } 
    }) 
    } 
) 
+0

Có thể cập nhật dữ liệu nhập trực tiếp trên ứng dụng không? Tôi đang cố gắng nhưng nó sẽ tự động thay đổi thành giá trị url. Ví dụ: trong url tôi chọn text = 'abc' và sau đó trên ứng dụng tôi muốn xác định text = 'def'. – hsilva

7

Building tắt của daattali, điều này phải mất bất kỳ số lượng đầu vào và hiện ấn định các giá trị cho bạn cho một vài loại khác nhau của nguyên liệu đầu vào:

ui.R:

library(shiny) 

shinyUI(fluidPage(
textInput("symbol", "Symbol Entry", ""), 

dateInput("date_start", h4("Start Date"), value = "2005-01-01" ,startview = "year"), 

selectInput("period_select", label = h4("Frequency of Updates"), 
      c("Monthly" = 1, 
       "Quarterly" = 2, 
       "Weekly" = 3, 
       "Daily" = 4)), 

sliderInput("smaLen", label = "SMA Len",min = 1, max = 200, value = 115),br(), 

checkboxInput("usema", "Use MA", FALSE) 

)) 

server.R:

shinyServer(function(input, output,session) { 
observe({ 
query <- parseQueryString(session$clientData$url_search) 

for (i in 1:(length(reactiveValuesToList(input)))) { 
    nameval = names(reactiveValuesToList(input)[i]) 
    valuetoupdate = query[[nameval]] 

    if (!is.null(query[[nameval]])) { 
    if (is.na(as.numeric(valuetoupdate))) { 
     updateTextInput(session, nameval, value = valuetoupdate) 
    } 
    else { 
     updateTextInput(session, nameval, value = as.numeric(valuetoupdate)) 
    } 
    } 

} 

}) 
}) 

Ví dụ URL để kiểm tra: 127.0.0 .1: 5767/biểu tượng = BBB, AAA, CCC, DDD & DATE_START = 2005/01/02 & period_select = 2 & smaLen = 153 & usema = 1

Các vấn đề liên quan