簡體   English   中英

通過js在R Shiny中設置默認的textInput值(作為js函數的結果)

[英]Setting default textInput value in R shiny via js (as result of js function)

我想將R Shiny應用程序與一個社交網絡的js SDK一起使用。 我想從js API獲取用戶ID,並將其設置為textInput表單的默認值。 但是只有一次,這是第一次。

我設法使用Shiny.onInputChange()函數(或Shiny.setInputValue()表示Shiny.setInputValue() > 1.1)獲得了最好的結果

玩具示例:

ui <- fluidPage(

 textInput("uid",label = h4("Input ID"),value = "1"),
 actionButton("goButton", "Check this out!", class="btn-primary"),

 # getting user id via js
 tags$script(HTML(
  '
  uid = some_js_code;
  console.log("My uid - " + uid);

  // setting new value for input$uid variable
  Shiny.onInputChange("uid", uid);
  // for newer version of shiny 
  //Shiny.setInputValue("uid", uid);
  '
)

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

  user<-reactive({

  input$goButton    
  user <- some_function_for_uid(input$uid)

  })

}

問題:

  1. 首次加載應用程序時,變量“ uid”的值不變。 該值保留為textInput函數中的value="1"value="1"

  2. 服務器功能some_function_for_uid() 在按goButton 時才接收變量的新值。 但是,文本形式的值仍然保持不變。

如何正確更改textInput中的默認值並避免描述的問題? 先感謝您。

要更新textInput的值:

$("#uid").val(uid);

我不知道您想使用該按鈕做什么。 這樣可以嗎:

ui <- fluidPage(

  textInput("uid", label = h4("Input ID"), value = "1"),
  verbatimTextOutput("showUID"),
  #actionButton("goButton", "Check this out!", class="btn-primary"),

  tags$script(HTML(
    '
    uid = "hello";

    // setting new value in the textInput
    $("#uid").val(uid);

    // setting new value for input$uid variable
    Shiny.onInputChange("uid", uid);
    '
  ))

)

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

  user <- eventReactive(input$uid, {
    rep(input$uid, 3)
  })

  output[["showUID"]] <- renderText({user()})

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM