Rhino模块开发Shiny应用问题:输入内容无法显示求助
解决Rhino框架下Shiny模块中shiny.fluent TextField无法同步输入值的问题
问题出在shiny.fluent的TextField.shinyInput组件默认不会自动将用户输入同步到Shiny的input对象中,必须显式配置onChange回调来触发值的更新。
修改后的app/view/page1.R代码:
box::use( shiny[moduleServer, textOutput, renderText, NS, div], shiny.fluent[TextField.shinyInput, Stack, shinyInputChange] ) #' @export ui <- function(id){ ns <- NS(id) Stack( TextField.shinyInput( ns("page1input"), value = "default value", # 配置回调同步输入值到Shiny onChange = JS(sprintf("function(value) { %s(value); }", shinyInputChange(ns("page1input")))) ), textOutput(ns('page1print')) ) } #' @export server <- function(id) { moduleServer(id, function(input, output, session){ output$page1print <- renderText(sprintf("Input from above: %s", input$page1input)) }) }
修改说明:
- 新增导入
shiny.fluent的shinyInputChange函数,该函数用于生成触发Shiny输入更新的JavaScript代码。 - 给
TextField.shinyInput添加onChange参数,通过JS()定义回调函数,当用户修改输入内容时,将当前值传递给Shiny的input$page1input对象。
main.R的代码无需修改,保持原样即可。修改后,输入框的内容会实时同步并显示在下方的文本输出区域。
内容的提问来源于stack exchange,提问作者Jason
相关产品推荐
相关产品推荐

