2017-11-30 24 views
0

shinyjs 패키지를 사용하여 navbarPage 요소의 탭을 숨기고 표시하는 응용 프로그램에서 작업하고 있습니다. 그것은 다른 목적으로 내 응용 프로그램에서 lubridate을 사용하기로 결정할 때까지 정상적으로 작동합니다.shiny : show 메서드를 사용할 때 lubridate와 shinyjs 사이에 충돌이 있습니까?

경고 : 쇼에 오류 : 내가 표시/숨기기 기능을 사용하려고하면 그냥 library 호출, 응용 프로그램이 정지되지 않는 인수를 (선택 = "#navbar 리튬 A [데이터 값 = 다음 mydata] ")

내 코드합니다 (lubridate 로딩하거나하지 않고 그것을 시도)

library(shiny); library(shinyjs); library(lubridate) 
ui <- fluidPage(useShinyjs(), navbarPage(id="navbar", title="Analysis", 
             tabPanel(title="Home", p("here is main page"), checkboxInput("show_other_tab", "show other tab?", value=FALSE)), 
             tabPanel(title="My Data", value="mydata", p("some other text")))) 
server = function(input, output, session){ 
    hide(selector = "#navbar li a[data-value=mydata]") 
    observe({ 
      if (input$show_other_tab) { 
       show(selector = "#navbar li a[data-value=mydata]") 
      } else { 
       hide(selector = "#navbar li a[data-value=mydata]")}})} 
shinyApp(ui, server) 

이 내 session.info()이다 : R 3.4.2 [1] lubridate_1.7.1 shinyjs_0.9.1 shiny_1.0.5

이 문제의 원인은 무엇이며이 오류를 방지하는 방법은 무엇입니까? 감사합니다

+0

참고 : 자바 스크립트 선이 여기 딘 아탈리에서 가져옵니다 : 거기에 내장 된 기능이에 대한 showTabhideTab되어 반짝 1.0.4 이후 그런데

그리고, https : //로 GitHub의 .com/daattali/shinyjs/issues/43 – agenis

답변

1

당신이합니다 (show가) 9 번째 줄에 중단 점을 설정하고 콘솔에서 show를 입력하면, 당신은 패키지 methods에서 가져 볼 것,하지 shinyjs : lubridate의

Browse[2]> show 
standardGeneric for "show" defined from package "methods" 

로드 그걸 일으키는 것 같아. 치료법은 해당 라인에서 shinyjs::show을 사용하여 shinyjs 패키지에서 가져온 것입니다.

ui <- navbarPage(id="navbar", title="Analysis", 
       tabPanel(title="Home", id =p("here is main page"), checkboxInput("show_other_tab", "show other tab?", value=FALSE)), 
       tabPanel(title="My Data", value="mydata", p("some other text"))) 
server = function(input, output, session){ 
    observe({ 
    if (input$show_other_tab) { 
     showTab("navbar", target = "mydata") 
    } else { 
     hideTab("navbar", target = "mydata") 
    } 
    }) 
} 
shinyApp(ui, server) 
+0

감사합니다. 정말 도움이됩니다! 이 새로운 기능을 몰랐습니다. 이것은 더 이상 shinyj 패키지가 필요 없다는 것을 의미합니다. 또한 shinyjs 전에 lubridate를로드하면 오류가 없음을 알았습니다. – agenis