Rshiny-禁用选项卡/向选项卡添加文本
我有一个闪亮的标签问题。我想创建一个带有两个选项卡的导航页面。对他们,我想插入一些用户的登录详细信息。没有“文本”或其他选项可在navbarPage中插入文本。但我创建了一个附加选项卡:Rshiny-禁用选项卡/向选项卡添加文本,r,tabs,shiny,R,Tabs,Shiny,我有一个闪亮的标签问题。我想创建一个带有两个选项卡的导航页面。对他们,我想插入一些用户的登录详细信息。没有“文本”或其他选项可在navbarPage中插入文本。但我创建了一个附加选项卡: library(shiny) runApp(list( ui = navbarPage( title="My App", tabPanel("tab1 title"), tabPanel("tab2 title"), tabPanel("U
library(shiny)
runApp(list(
ui = navbarPage(
title="My App",
tabPanel("tab1 title"),
tabPanel("tab2 title"),
tabPanel("User: Madzia")),
server = function(input, output) { }
))
这样可以,但我不希望第三个选项卡是“可选择的”:我希望它被禁用,这样我们就不能点击它-与“我的应用”文本相同。你知道如何处理这个问题吗?
非常感谢。最好的,Madzia你可以用一点点javascript禁用一个选项卡。我有一个关于如何在最近的博客文章中隐藏标签(而不是禁用)的示例,您可以看到相关代码。我修改了一点代码来禁用它 这段代码是有黑客行为的,因为它在2分钟内就完成了,但对于一个基本的用例来说是可行的
library(shiny)
library(shinyjs)
jscode <- '
shinyjs.init = function() {
$(".nav").on("click", ".disabled", function (e) {
e.preventDefault();
return false;
});
}
'
css <- '
.disabled {
background: #eee !important;
cursor: default !important;
color: black !important;
}
'
shinyApp(
ui = fluidPage(
useShinyjs(),
extendShinyjs(text = jscode, functions = "init"),
tags$style(css),
checkboxInput("foo", "Disable tab2", FALSE),
tabsetPanel(
id = "navbar",
tabPanel(title = "tab1",
value = "tab1",
h1("Tab 1")
),
tabPanel(title = "tab2",
value = "tab2",
h1("Tab 2")
),
tabPanel(title = "tab3",
value = "tab3",
h1("Tab 3")
)
)
),
server = function(input, output) {
observe({
toggleClass(condition = input$foo,
class = "disabled",
selector = "#navbar li a[data-value=tab2]")
})
}
)
库(闪亮)
图书馆(shinyjs)
jscode您可以使用少量javascript实现禁用选项卡。我有一个关于如何在最近的博客文章中隐藏标签(而不是禁用)的示例,您可以看到相关代码。我修改了一点代码来禁用它
这段代码是有黑客行为的,因为它在2分钟内就完成了,但对于一个基本的用例来说是可行的
library(shiny)
library(shinyjs)
jscode <- '
shinyjs.init = function() {
$(".nav").on("click", ".disabled", function (e) {
e.preventDefault();
return false;
});
}
'
css <- '
.disabled {
background: #eee !important;
cursor: default !important;
color: black !important;
}
'
shinyApp(
ui = fluidPage(
useShinyjs(),
extendShinyjs(text = jscode, functions = "init"),
tags$style(css),
checkboxInput("foo", "Disable tab2", FALSE),
tabsetPanel(
id = "navbar",
tabPanel(title = "tab1",
value = "tab1",
h1("Tab 1")
),
tabPanel(title = "tab2",
value = "tab2",
h1("Tab 2")
),
tabPanel(title = "tab3",
value = "tab3",
h1("Tab 3")
)
)
),
server = function(input, output) {
observe({
toggleClass(condition = input$foo,
class = "disabled",
selector = "#navbar li a[data-value=tab2]")
})
}
)
库(闪亮)
图书馆(shinyjs)
jscode我想保留我以前的答案,因为它可能对将来想知道如何禁用选项卡的人有用
但是对于这个特定的问题,禁用选项卡不是正确的方法。简单地向选项卡添加文本更有意义(正如瓦尔特在评论中指出的)。如果您查看有关引导的文档,它会说您可以通过使用classnavbar text
添加html元素,将文本添加到navbar中。我对HTML进行了一点试验,以确定需要在何处执行此操作,并创建了一个小函数,该函数将环绕navbarPage()
,允许您向其中添加文本
下面是一个例子:
library(shiny)
navbarPageWithText <- function(..., text) {
navbar <- navbarPage(...)
textEl <- tags$p(class = "navbar-text", text)
navbar[[3]][[1]]$children[[1]] <- htmltools::tagAppendChild(
navbar[[3]][[1]]$children[[1]], textEl)
navbar
}
ui <- navbarPageWithText(
"Test app",
tabPanel("tab1", "tab 1"),
tabPanel("tab2", "tab 2"),
text = "User: Dean"
)
server <- function(input, output, session) {
}
shinyApp(ui = ui, server = server)
库(闪亮)
navbarPageWithText我想保留我以前的答案,因为它可能对将来想知道如何禁用选项卡的人有用
但是对于这个特定的问题,禁用选项卡不是正确的方法。简单地向选项卡添加文本更有意义(正如瓦尔特在评论中指出的)。如果您查看有关引导的文档,它会说您可以通过使用classnavbar text
添加html元素,将文本添加到navbar中。我对HTML进行了一点试验,以确定需要在何处执行此操作,并创建了一个小函数,该函数将环绕navbarPage()
,允许您向其中添加文本
下面是一个例子:
library(shiny)
navbarPageWithText <- function(..., text) {
navbar <- navbarPage(...)
textEl <- tags$p(class = "navbar-text", text)
navbar[[3]][[1]]$children[[1]] <- htmltools::tagAppendChild(
navbar[[3]][[1]]$children[[1]], textEl)
navbar
}
ui <- navbarPageWithText(
"Test app",
tabPanel("tab1", "tab 1"),
tabPanel("tab2", "tab 2"),
text = "User: Dean"
)
server <- function(input, output, session) {
}
shinyApp(ui = ui, server = server)
库(闪亮)
navbarPageWithText嗨Dean!我认为Madzia想要的是导航菜单中的一些文本来显示登录信息。在引导中,这是通过以Madzia身份登录的