如何避免运行动态添加输入的初始观察事件

当动态输入元素添加到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

回到顶部