防止 Rshiny 将“配置调用”误认为是 navbarPage 内的 UI 元素

问题描述 投票:0回答:1

我有以下用户界面:


ui <- navbarPage(
  title="Foo",
  fluid=T,
  
  # For positioning of the progress bar notification
  tags$head(
    tags$style(HTML(
      ".shiny-notification {
        height: 100px;
        width: 800px;
        position:fixed;
        top: calc(50% - 50px);
        left: calc(50% - 100px);
      }"
    )),
    # tags$style for font size of column headers
    tags$style(HTML(
      ".dataTables_wrapper th {
        font-size: 10px;
      }"
    )),
    # tags$link and tags$script are included so that we can use KaTeX to render LaTeX in DataTables
    tags$link(
      rel = "stylesheet",
      href = "https://cdn.jsdelivr.net/npm/[email protected]/dist/katex.min.css",
      integrity = "sha384-MlJdn/WNKDGXveldHDdyRP1R4CTHr3FeuDNfhsLPYrq2t0UBkUdK2jyTnXPEK1NQ",
      crossorigin = "anonymous"
    ),
    tags$script(
      defer = "",
      src = "https://cdn.jsdelivr.net/npm/[email protected]/dist/katex.min.js",
      integrity = "sha384-VQ8d8WVFw0yHhCk5E8I86oOhv48xLpnDZx5T9GogA/Y84DcCKWXDmSDfn13bzFZY",
      crossorigin = "anonymous"
    )
  ),
  useShinyjs(),  # must be called once for progress bar and similar elements to work

  someOtherUiElement()
)

navbarPage
误解了使用
tags$head
useShinyjs
作为 UI 元素的部分,因此最终会在实际 UI 按钮的左侧创建这些不可见的、方形的、非功能性的 UI 元素。我怎样才能防止这种情况发生?所附的屏幕截图显示了它所指的导航窗格的部分。我圈出了两个不可见元素所在的区域,并选择了右侧的一个。

enter image description here

r shiny
1个回答
0
投票

参考 YBS 和 Limey,他们的方法很有帮助。我不明白的是,虽然闪亮的 UI 元素可能感觉它们的行为相似,但它们的签名确实允许非常不同的事情。因此,尽管 HTML 标签和

useShinyjs()
实际上并不占用任何空间并且是不可见元素,但它们在
fluidRow
中是允许的,但在
navbarPage
中是禁止的。目前,将它们放在子模块中效果很好。我还没有尝试过,一旦我在同一层次结构中添加另一个模块,这是否会破坏事情,但我猜测将
navbarPage
包装在
fluidPage
中可能会解决这个问题。

TL;DR:将对应用程序在

fluidRow
之外的任何容器中运行所需的函数进行调用(可能还有
navbarPage
?)。
    

© www.soinside.com 2019 - 2024. All rights reserved.