如何避免运行动态添加输入的初始观察事件
当动态输入元素添加到UI时,它将触发其已存在的observeEvent。具体来说,请参见下面的示例,其中textInput是在服务器端函数的第一次加载时动态添加的。然后当它呈现时,将触发observeEvent。如何避免运行动态添加输入的初始观察事件
有没有一种方法可以在一般情况下避免添加输入元素的这种触发,特别是我希望以类似的方式测试输入1和测试输入2两个火,即不是在启动时。
的UI.R文件
library(shiny) # Define UI for application that draws a histogram
shinyUI(fluidPage(
fluidRow(
uiOutput("my_output"),
textInput(inputId = "test2", label = "test2", value = "start value"))
))
的server.R文件
library(shiny) first.load <- TRUE
shinyServer(function(input, output) {
if(first.load){
output$my_output <- renderUI({
textInput(inputId = "test", label = "test", value = NULL)
})
}
observeEvent(input$test2,{
browser()
}, ignoreInit = T)
observeEvent(input$test, {
browser()
}, ignoreInit = T)
})
回答:
的obServeEvent被反应的input$test的存在。所以当它初始化为value = ""时,observeEvent将会启动,因为""仍然是非空值。作为一个快速修复你可以在一个逻辑包住observeEvent只运行,如果input$test不等于"":
observeEvent(input$test, { if (!input$test == ""){
browser()
}
}, ignoreInit = T)
})
以上是 如何避免运行动态添加输入的初始观察事件 的全部内容, 来源链接: utcz.com/qa/262116.html

