2013-06-18 8 views
9

renderUI() 'ın reaktivite ile ilgili sorunlar Seçenek 2 "çalışıyor. Etkin olan "# Seçenek 1" ile, rastgele dize yazmayı ve düğmesine basmayı deneyin. İlk kez metin kutusunda "abc" ile yer değiştirir, ancak sonraki tüm zamanlar olmaz.Parlak - Ben R. içinde</p> Ben neden çalışmıyor '# Seçenek 1' server.R içinde anlamaya çalışan, ancak yorumladı am <p>"# Parlak paketi ile sorun yaşamaya

Anlayışımda val() zaten $ change girişine bağlıdır, bu yüzden düğmeye her basıldığında yeniden çalıştırılmalı, ayrıca "# Option 2" isolate() içine sarılır, böylece eklenmez herhangi bir reaktivite.

Aslında "# Seçenek 1" kullanıldığında, değer kısmen "abc" olarak değişir. Google Chrome'un inceleme öğesini açtığınızda, "# Option 2" düğmesinin her basıldığında, "# Option 1" değerinin de değeri "abc" olarak değiştirdiğini ancak ekranın yalnızca düğme ile güncellendiğini görebilirsiniz. ilk kez basıldı.

require(shiny) 

shinyServer(function(input, output) { 

    val <- reactive({ 
    if(input$change>0) { 
    # Option 1 
     'abc' 
#  # Option 2 
#  isolate({ 
#   paste('abc',input$txt,"") 
#  }) 
    } else { 
     '' 
    } 
    }) 

    output$textbox <- renderUI({ 
    textInput("txt","Text",val()) 
    }) 

}) 

ui.R orada bir yerde gizlenmiş bir hata olabilir gibi bu görünüyor

require(shiny) 
require(shinyIncubator) 

shinyUI(pageWithSidebar(
    headerPanel('Test'), 

    sidebarPanel(
    uiOutput("textbox"), 
    actionButton("change", "Change") 
), 

    mainPanel(

) 
)) 

cevap

4

burada tepkisini bakın.

+0

Teşekkürler! Metin giriş değerinin sonunda bir boşluk ekleyerek ve giriş değeri sonunda bir boşluk varsa bir alanı kaldırarak sorunu çözdüm, böylece yeni değer her zaman bir öncekinden farklı olacaktır. Zaten tüm gelen dizeleri kırpıyorum. – user1603038

1

server.R ama elimden: Burada

kodudur Onu takip et.

İyi haber şu ki, bu etkiyi updateTextInput işleviyle gerçekleştirebilmeniz gerektiğini düşünüyorum.

Daha ayrıntılı bir bakış için, bunun için bir hata oluşturdum. https://github.com/rstudio/shiny/issues/181. Ne olup bittiğini anladığımızda, bu mesajı güncellemeyi deneyeceğim.

https://groups.google.com/d/msg/shiny-discuss/PLHauRlFw3k/AnoD7NusvDIJ

özü sunucusu textbox çıkışa tam olarak aynı değere gönderme tutar, bu yüzden müşteri bunu görmezden kadar "akıllı" dir: