我已经从DB的server.R
中初始加载了数据,这需要花费几秒钟。在完成此操作之前,显示的页面会变形(选择框中的数据错误,并且这些框的放置位置很奇怪,请参见下文)。
我想显示一个不同的页面(或至少在我的第一个显示的选项卡中显示不同的内容),直到数据完全加载为止。
我考虑过要使用基于专用全局变量(initial_loading_done)的条件来进行某种conditionalPanel
操作,但是无论我在何处尝试放置conditionalPanel
都不起作用。
这是我的UI.R的结构:
shinyUI(
dashboardPage(
dashboardHeader(title = "Title"),
dashboardSidebar(
sidebarMenu(
menuItem("Tab1", tabName = "Tab1",icon = icon("dashboard")),
menuItem("Tab2", tabName = "Tab2", icon = icon("bar-chart-o"))
)
),
dashboardBody(
includeCSS("custom_css.css"),
tabItems(
tabItem(tabName = "Tab1",
fluidRow(<content>),
mainPanel(
fluidRow(<content>)
)
),
tabItem(tabName = "Tab2",
fluidRow(<content>),
mainPanel(
dataTableOutput('my_data_table')
)
)
)
)
)
)
最佳答案
这是一个使用shinyjs
包的非常简单的示例
这个想法是在不同的ID下创建加载“页面”和内容“页面”,使内容页面最初处于隐藏状态,并在应用就绪后使用show()
和hide()
library(shiny)
library(shinyjs)
load_data <- function() {
Sys.sleep(2)
hide("loading_page")
show("main_content")
}
ui <- fluidPage(
useShinyjs(),
div(
id = "loading_page",
h1("Loading...")
),
hidden(
div(
id = "main_content",
"Data loaded, content goes here"
)
)
)
server <- function(input, output, session) {
load_data()
}
shinyApp(ui = ui, server = server)
关于r - Shiny 的仪表板-显示专用的“正在加载..”页面,直到完成数据的初始加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35599470/