gpt4 book ai didi

javascript - 通过js设置R Shiny 的默认textInput值(作为js函数的结果)

转载 作者:行者123 更新时间:2023-12-02 23:52:39 28 4
gpt4 key购买 nike

我想将R Shiny 应用程序与一个社交网络的js SDK一起使用。我想从 js API 获取用户 ID 并将其设置为 textInput 表单的默认值。但只有一次,第一次。

我使用 Shiny.onInputChange() 函数(或 Shiny.setInputValue() 对于shiny>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")

  2. 当我按下 goButton 时,服务器函数some_function_for_uid()接收变量的新值。但文本形式的值仍然保持不变。

如何正确更改 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()})

}

关于javascript - 通过js设置R Shiny 的默认textInput值(作为js函数的结果),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55572226/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com