隐藏闪亮的选项卡面板时如何去除残留物
How to remove residual when hiding a tabpanel in shiny
我想 hide/show 给定特定条件的选项卡面板。选择"source 2"时,我想隐藏TAB2,但是我使用的代码有一个错误。
如果我先选择"source 1",然后点击"tab2",并将数据源更改为"source 2","tab2" tabpanel确实隐藏了,但是"tab2"的内容涵盖了"tab1"的内容。如何删除隐藏选项卡的剩余部分?任何想法将不胜感激。
library(shiny)
library(shinyjs)
runApp(list(
ui = fluidPage(
useShinyjs(),
selectInput('dataSource',h5("Please choose the data source:"), c("source 1", "source 2"), "source 1"),
tabsetPanel(
id = "navbar",
tabPanel(title = "tab1",
value = "tab1",
h1("Tab 1")
),
tabPanel(id="id2", title = "tab2",
value = "tab2",
h1("Tab 2")
)
)
),
server = function(input, output) {
observeEvent(input$dataSource,{
toggle(condition = (input$dataSource !='source 2'), selector = "#navbar li a[data-value=tab2]")
})
}
))
[错误看起来像这样][1] [1]: http://i.stack.imgur.com/eOHLS.png
我可以在笔记本电脑上重现错误。
我的建议是使用 renderUI
函数动态创建 tabsetPanel
。
library(shiny)
# library(shinyjs)
runApp(list(
ui = fluidPage(
#useShinyjs(),
selectInput('dataSource',h5("Please choose the data source:"), c("source 1", "source 2"), "source 1"),
uiOutput("dynamic")
),
server = function(input, output) {
output$dynamic <- renderUI({
if (input$dataSource == "source 1") {
tabsetPanel(
id = "navbar",
tabPanel(title = "tab1",
value = "tab1",
h1("Tab 1")
),
tabPanel(id="id2", title = "tab2",
value = "tab2",
h1("Tab 2")
)
)
} else {
tabsetPanel(
id = "navbar",
tabPanel(title = "tab1",
value = "tab1",
h1("Tab 1")
)
)
}
})
}
))
我想 hide/show 给定特定条件的选项卡面板。选择"source 2"时,我想隐藏TAB2,但是我使用的代码有一个错误。 如果我先选择"source 1",然后点击"tab2",并将数据源更改为"source 2","tab2" tabpanel确实隐藏了,但是"tab2"的内容涵盖了"tab1"的内容。如何删除隐藏选项卡的剩余部分?任何想法将不胜感激。
library(shiny)
library(shinyjs)
runApp(list(
ui = fluidPage(
useShinyjs(),
selectInput('dataSource',h5("Please choose the data source:"), c("source 1", "source 2"), "source 1"),
tabsetPanel(
id = "navbar",
tabPanel(title = "tab1",
value = "tab1",
h1("Tab 1")
),
tabPanel(id="id2", title = "tab2",
value = "tab2",
h1("Tab 2")
)
)
),
server = function(input, output) {
observeEvent(input$dataSource,{
toggle(condition = (input$dataSource !='source 2'), selector = "#navbar li a[data-value=tab2]")
})
}
))
[错误看起来像这样][1] [1]: http://i.stack.imgur.com/eOHLS.png
我可以在笔记本电脑上重现错误。
我的建议是使用 renderUI
函数动态创建 tabsetPanel
。
library(shiny)
# library(shinyjs)
runApp(list(
ui = fluidPage(
#useShinyjs(),
selectInput('dataSource',h5("Please choose the data source:"), c("source 1", "source 2"), "source 1"),
uiOutput("dynamic")
),
server = function(input, output) {
output$dynamic <- renderUI({
if (input$dataSource == "source 1") {
tabsetPanel(
id = "navbar",
tabPanel(title = "tab1",
value = "tab1",
h1("Tab 1")
),
tabPanel(id="id2", title = "tab2",
value = "tab2",
h1("Tab 2")
)
)
} else {
tabsetPanel(
id = "navbar",
tabPanel(title = "tab1",
value = "tab1",
h1("Tab 1")
)
)
}
})
}
))