• 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

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

r 来源:N Meibergen 3次浏览

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

版权声明:本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系管理员进行删除。
喜欢 (0)