2017-01-04 14 views
9

Bir sekmeye tıkladığınızda Kenar Çubuğu'u flexdashboard güncelleştirmeye çalışıyor. Işe yaramaz.Parlaklık ve flexdashbord ile girdiyi dinamik olarak göster/gizle

--- 
title: "Test Sidebar" 
output: 
    flexdashboard::flex_dashboard: 
    orientation: rows 
runtime: shiny 
--- 

```{r setup} 
library(flexdashboard) 
library(shiny) 
library(shinyjs) 
useShinyjs(rmd = TRUE) 
``` 
Sidebar {.sidebar data-width=250} 
======================================================================= 

```{r} 
div(id = "one", selectInput("input1",label= "Show Always",choices=c("a","b","c")))  
div(id = "two",selectInput("input2",label = "Show only on Tab 1", choices=c("d","e","f"))) 
``` 

<!-- Update the sidebar based on the tab chosen. Generated HTML code shown for tabs--> 

Tab 1 <!-- <a href="#section-tab-1" aria-expanded="true" data-toggle="tab"> --> 
======================================================================= 
```{r} 
useShinyjs(rmd = TRUE) 
shinyjs::onclick("#section-tab-2",shinyjs::hide(id = "two")) 
shinyjs::onclick("#section-tab-1",shinyjs::show(id = "two")) 
``` 

Tab 2 <!-- <a href="#section-tab-2" aria-expanded="true" data-toggle="tab"> --> 
======================================================================= 
```{r} 
useShinyjs(rmd = TRUE) 
actionButton("hideSlider", "Hide Input Two") 
observeEvent(input$hideSlider, { 
    shinyjs::toggle(id = "two", anim = TRUE) 
    }) 
``` 

actionButton() ve observerEvent() ile tamamdır. Herhangi bir öneri takdir edildi.

+0

Bağlantılarınıza bir 'id' eklemeyi deneyin ve bunun yerine bu onayı 'onclick' olarak adlandırın. – NicE

cevap

1

birkaç yorum:

  • Sadece bir kez useShinyjs() çağırmanız gerekir, gerek her kod yığın

  • onclick() onu aramak için öğenin kimliğini alır. Seçici değil - Kimlik. Bu pano tarafından oluşturulan alır HTML bakarsanız, "bölüm ve sekme-2", peki' kimliği ile hiçbir unsur olduğunu görürsünüz onclick("element") yerine onclick("#element")

  • diyoruz demektir işe yaramaya çalışmak işe yaramaz

  • Düzenli olarak parlak uygulamalarda, tabsetPanel() kullandığımda, yapmaya çalıştığım şeyi yaptığım şekilde seçili sekmenin değerini kullanmaktır. Bir sekme seçildiğinde, seçili olanın değerini veren bir giriş değeri vardır. Ben flexdashboard geniş kullanmadım bu yüzden flexdashboard seçili sekmenin değerini almak için benzer bir yolu var mı emin değilim.

+0

Girdi için @daattali teşekkürler. Etrafında arama yaptım ve şu anda flexdashboard ile çözmek için nispeten kolay olduğunu düşünmüyorum. – iboboboru

İlgili konular