2017-12-18 5 views
1

動的入力要素がUIに追加されると、それは既に存在するobserveEventをトリガーします。特に、textInputがサーバー側関数の最初のロード時に動的に追加される以下の例を参照してください。その後、observeEventがレンダリングされます。動的に追加された入力の初期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")) 

)) 

obServeEventinput$testの存在に反応している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) 
}) 
+0

入力を作成し、一部JavaScriptを使用して、一度に同じ問題を抱えていました。 – agenis

答えて

0

。だからで初期化するとは""がまだヌル値ではないので起動します。クイックフィックスとして、あなたはinput$test""に等しくない場合に実行のみにロジックでobserveEventをラップすることができます

observeEvent(input$test, { 
    if (!input$test == ""){ 
     browser() 
    } 
    }, ignoreInit = T) 
}) 
+0

私はそれに値を与えないでも、それをNULLにしても起動します。しかし、それは実際に私の質問のポイントの横にあるでしょう。そのような要素を動的に追加して、それがあらかじめ決められたときと同じように機能するようにしたい。 –

関連する問題