闪亮:使用 show 方法时 lubridate 和 shinyjs 之间有冲突吗?
shiny: conflict between lubridate and shinyjs when using show method?
我正在开发一个应用程序,我在其中使用 shinyjs
包来隐藏和显示 navbarPage
元素的选项卡。它工作正常,直到我决定将我的应用程序中的 lubridate
用于其他目的。仅通过 library
调用,当我尝试使用 show/hide 功能时应用程序冻结:
Warning: Error in show: unused argument (selector = "#navbar li
a[data-value=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
是什么导致了这个错误以及如何避免这个错误?谢谢
如果您在第 9 行(show
所在的位置)设置断点并在您的控制台中键入 show
,您将看到它是从包 methods
中获取的,而不是shinyjs
:
Browse[2]> show
standardGeneric for "show" defined from package "methods"
加载 lubridate 似乎是造成这种情况的原因。解决方法是在该行中使用 shinyjs::show
,以确保它来自 shinyjs
包。
顺便说一句,自 Shiny 1.0.4 以来,有内置函数 showTab
和 hideTab
:
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)
我正在开发一个应用程序,我在其中使用 shinyjs
包来隐藏和显示 navbarPage
元素的选项卡。它工作正常,直到我决定将我的应用程序中的 lubridate
用于其他目的。仅通过 library
调用,当我尝试使用 show/hide 功能时应用程序冻结:
Warning: Error in show: unused argument (selector = "#navbar li a[data-value=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
是什么导致了这个错误以及如何避免这个错误?谢谢
如果您在第 9 行(show
所在的位置)设置断点并在您的控制台中键入 show
,您将看到它是从包 methods
中获取的,而不是shinyjs
:
Browse[2]> show
standardGeneric for "show" defined from package "methods"
加载 lubridate 似乎是造成这种情况的原因。解决方法是在该行中使用 shinyjs::show
,以确保它来自 shinyjs
包。
顺便说一句,自 Shiny 1.0.4 以来,有内置函数 showTab
和 hideTab
:
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)