- 已编辑
最近发现一个简洁的方法设置复位按钮,不需要用到额外的包或observeEvent()
,updateXXnput()
。有哪位 html 大神能解释一下是什么原理吗?我现在知其然不知其所以然。
library(shiny)
runApp(list(
ui = pageWithSidebar(
headerPanel("Example"),
sidebarPanel(
uiOutput('resetable_input'),
actionButton("reset_input", "Reset inputs")
),
mainPanel(
verbatimTextOutput("summary")
)
),
server = function(input, output, session) {
output$summary <- renderText({
return(paste(input$integer, input$mynumber))
})
output$resetable_input <- renderUI({
input$reset_input
div(id="ID_A",
numericInput("mynumber", "Enter a number", 20),
sliderInput("integer", "Integer:",
min = 0, max = 1000,
value = 500))
})
}
))
这里的 input$reset_input
并没有连接到任何的逻辑,直接放到 renderUI()
里就行了。我一开始觉得会不会是一定要 0,1,2,...(actionButton 的输出) 的数字,所以把input$reset_input
换成 string,如下,同样行得通 (把 text 改动前面两个 input 回到原始数值)。
library(shiny)
runApp(list(
ui = pageWithSidebar(
headerPanel("Example"),
sidebarPanel(
uiOutput('resetable_input'),
textInput("reset_input", "Enter a text", "test")
),
mainPanel(
verbatimTextOutput("summary")
)
),
server = function(input, output, session) {
output$summary <- renderText({
return(paste(input$integer, input$mynumber))
})
output$resetable_input <- renderUI({
input$reset_input
div(id="ID_A",
numericInput("mynumber", "Enter a number", 20),
sliderInput("integer", "Integer:",
min = 0, max = 1000,
value = 500))
})
}
))
问题:
- 为什么在
renderUI()
里,div 前加一个变量,这个变量会重设 div() 里面的 input 为初始值? - 如果这个方法行得通,可否代替
updateXXInput()
的功能?
谢谢!